内存使用情况对比
系统负载对比
分析测试结果
CPU使用情况
在极限并发的情况下apache和nginx都占用很多CPU资源,这也是情理之中的事情。nginx略好于apache平均占用90%而apache则在95%左右
内存使用情况
在内存对比中可以清楚的看到,nginx在极限并发的情况下内存控制得很好,到达一定程度后就不在变化了,而apache则会直线上升
负载情况
负载情况与内存情况类似,如果高并发时间很长的话apache服务器绝对会挂掉!nginx的负载也很高,但一直保持在10以下,这也和内存占用有关。
五、结论
利用httperf结合autobench可以很方便的测试出单台服务器的极限并发数,这样对服务器性能评估有很大帮助,借助于autobench的bench2graph脚本可以生成更为直观的对比图。
针对被测服务器,经过apache与nginx的对比发现,在静态文件的处理方面如果并发小于1500,apache和nginx之间的差距还是很小的。在动态php文件的并发测试中,nginx体现出其强大的性能优势,如果内存足够大,通过调整php-cgi数量,相信可以承载更多的并发连接。
六、附录1、问题解决
(1)当运行时报如下错误
httperf:warning:openfilelimit〉FD_SETSIZE;limitingmax。#ofopenfilestoFD_SETSIZE
解决方法
其意思是说在httperf在发起连接请求时,单个进程已经无法再打开更多的文件描述符。在发起连接请求时httperf使用select()方法使用一个新的文件描述符。因此需要增加文件描述符限制
步骤1:编辑/etc/security/limits。conf在最后添加下面两行内容
*hardnofile102400
*softnofile102400
步骤2:编辑/usr/include/bits/typesizes。h文件修改__FD_SET_SIZE常量值,如下
#define__FD_SETSIZE1024
修改为
#define__FD_SETSIZE102400
步骤3:重新编译httperf