移动互联网数据分析 移动客户端流量统计 移动客户端数据统计(二)

来源:互联网 发布:java鱼雷好吗 编辑:程序博客网 时间:2024/06/08 01:20

原创文章,转载请注明原地址

http://blog.csdn.net/stevenprime

 

二.数据的收集

移动客户端收集数据后,一般通过http协议或者其它方式上传到服务器.

服务器将客户端传过来的数据进行持久化.

刚开始的时候,我的做法比较山寨,起了一个web应用,写了一个servlet,从http请求中将数据提取出来,

直接插入数据库.这样的问题很明显,如果并发稍高,数据库首先撑不住,因此用了数据库连接池,

这样的问题还是很明显,并发再高,数据库都会面临非常大的压力.

再后来,经过经理的提醒,打算先将数据存为日志,因此在servlet中使用了log4j,将数据按照一定的格式存为日志.

但是受限于java web应用的处理模型,在压力测试的时候,发现servlet在高并发下,响应时间会很长,而且超时率非常高.

在我们公司的破机器下,2G内存,4核cpu,在1000并发的情况下,响应时间大概100ms以上,3000并发的情况下,响应时间达到了500ms,

而且超时率已经达到了5%,cpu占用率相当高.

当时领导带我去找了一位公司牛人,他是负责nginx模块开发的,当时我对nginx是什么都不太清楚.

他写了一个nginx接收post请求的模块,我从他哪里将模块代码拿来,经过自己的修改,增加了配置日志滚动时间,配置自定义文件名等功能,

后来再进行压力测试,在5000并发下,相应时间非常少,而且超时率为0%,cpu占用也不高,由于满足了需求,而且没有再多的测试服务器,所以不在往上测试了.

当时nginx的稳定版好像是0.7.x,开发版是0.8.x,当时的nginx不支持静态post请求,因此自己开发nginx模块,当时还发现了nginx存在的bug :)

开发nginx模块是稍有难度的,像我这样平时是以java语言为主的,好久没碰c语言了,改写nginx模块,还比较费劲.

不过现在的nginx模块好像增加静态post功能了,而且可以用nginx的lua模块来获取http请求中的内容了.

比以前容易多了.

 

 

 

原创文章,转载请注明原地址

http://blog.csdn.net/stevenprime

原创粉丝点击