最近用loadrunner测试一个php应用的并发(相当于论坛).
客户要求.每秒达到4000-5000并发请求.
提供了8台联想PC..4G内存,双核的CPU. 而且无光驱,又不能上外网.
客户要求.每秒达到4000-5000并发请求.
提供了8台联想PC..4G内存,双核的CPU. 而且无光驱,又不能上外网.
其中4台用硬盘安装了双系统.CentOS.32位.网口100M.(板载网卡性能差,改用独立的)
4台装loadrunner测试.每台模拟1000用户,thinktime设成0.
1,先单机测试. nginx + php-fpm + mysql
平均:1700hits/s, 800trans/s, CPU 80%多, 内存占用2G左右, 网络90%.
应用加了Cache数据库命中率不高但仍然占了20%CPU. 按这个测试,也就差不多极限了.
2,接下来做负载均衡. 1台nginx proxy pass 到后面3台 如上面测试的配置.
发现出现502错误,连接不稳定,负载不均衡. 网络流量也不稳定.直接刷页面也不慢.
测试结果并没有3X,反而是0.5X,很是郁闷.
修改多次php-fpm,nginx的workprocessor等等参数. 不见效.今日以遗憾告终.
3,回来后赶紧查资料.发现以下可能项,需要优化.
1),nginx upstream的排错逻辑可能造成的问题. (修改后有效)
2),nginx proxy时,如果后端响应超时或失败会暂停请求10s(已印证)
3),nginx 超时时间设置过长. (修改后有效)
4),worker_rlimit_nofile配置要和系统内核配置一致,我的是65535.(修改有效)
5),linux内核配置问题. 启动 nginx前执行ulimit -HSn 65535,
版权声明:本文为phpmaster原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。