公司项目做了一个数据分析系统。其中一个环节是收集原始数据,访问一次界面记录一次pv,uv,ip。 由我来负责。
从开始的一开启就挂掉,到后来的可以用一段时间,后来又挂掉,经过了太多的修改。
刚开始的时候是收集数据和统计数据一起做。导致高访问量的时候挂掉
后来是分开我这边只收集原始数据,也就是用最快的插入数据库。这个方法持续了一段时间,后来不知道什么原因又挂了。可能瞬间访问量又增加。
拒运维数据说每秒访问量达5K每秒。后来我们修改了构架方案。用户进来后先把数据缓存到memchache。然后每一分钟写入一次数据。
运维方面还做了php加速处理:http://www.vpser.net/opt/apc-eaccelerator-xcache.html 目前用的是 eAccelerator
现在这样就非常顺畅。运维那边还做了dns巡回3个服务器。现在毫无压力了。
总结:
数据库插入操作超过每秒100次,有可能会影响io,然后影响到php。这时候:
1、尽量使数据库一次性写入Data File
2、减少数据库的checkpoint 操作
3、程序上尽量缓冲数据,进行批量式插入与提交
4、减少系统的IO冲突
附:服务器信息:
Intel(R) Xeon(R) CPU E5-2420 0 @ 1.90GHz
32GB内存