之前一直研究nginx的源代码,最近有时间也做了下nginx与apache的性能对比,希望能够够对大家有所帮助!
nginx动态文件处理能力差?
这是我最困惑的地方,在google了nginx之后发现它的评价并没有想象中那么差劲,并且很多公司已经开始用nginx+php(fast-cgi)作为主流web服务器,于是我决定亲自试一试。
测试环境:
web服务器:192.168.0.235双核(Intel(R) Xeon(TM) CPU 3.00GHz)
测试客户端:192.168.30.149双核(Pentium(R) Dual-Core CPU E5200 @ 2.50GHz)
测试工具:
webbench-1.5 ,这里为何不用ab命令,因为测试时发现,在高并发下,ab命令可能会失败,在任务没有完成时,强制终止。所以我们要有一个容错的工具来进行测试。
直接进入主题:
a、首先来看一下静态文件的处理性能比较:
①处理数据量比较
x轴:并发量
y轴:每秒钟的数据处理量(byte/sec)
这里不过多解释,nginx的静态处理能力完胜apache。
②出错率比较
x轴:并发量
y轴:出错率(%)
nginx 出错率一直保持在%1左右,而apache表现处理不稳定性。
b、下面是我们最关心的动态文件处理性能比较:
①同样来看一下数据处理量比较
可以看出nginx的动态文件处理能力并不比apache差!!!
② 出错率比较
根据出错率来看,nginx明显低于apache,总的观察看来nginx无论是动态处理能力还是静态处理能力,都比apahce要强劲很多。
也许你有以下问题:
1.有人说nginx+fast-cgi不够稳定?
这个事实可以证实,目前新浪博客、新浪播客、网易新闻、腾讯网、搜狐博客等门户网站频道,六间房、56.com等视频分享网站,Discuz!官方论坛、水木社区等知名论坛,盛大在线、金山逍遥网等网络游戏网站,豆瓣、人人网、YUPOO相册、金山爱词霸、迅雷在线等新兴Web 2.0网站均用nginx做web服务器。
2.我们的系统已经很稳定了,为什么还要冒风险来用nginx做动态处理?
网站的系统架构犹如逆水行舟,不进则退。随着业务增长,谁不希望更多的消费者呢?怎样创造一个满意的环境给消费者?之前的测试完全是在nginx没有优化的前提下完成的,而在优化后Nginx 0.8.46 + PHP 5.2.14 (FastCGI)可以承受3万以上的并发连接数,相当于同等环境下Apache的10倍。这点每一个加班监控系统的兄弟们都会有感触吧。
最后附上一些数据:
这里就不全部展示,如果需要全部数据请留下电子邮箱!