php测试吞吐量,Ab吞吐量测试,为何nginx却不如 apache

Windows 7 上 IIS 和 Apache 性能对比测试

IIS + php-cgi.exe(NTS) vs Apache + php5apache2_4.dll(TS)

环境(64位Win7): IIS7+PHP5.4(NTS非线程安全版本) vs Apache2.4(32位)+PHP5.4

静态文件性能:

ab -k -c100 -n10000 http://127.0.0.1/info.htm # IIS RPS 1709

ab -k -c100 -n10000 http://127.0.0.1:8080/info.htm # Apache RPS 1847

结论:基于APR运行时和WinNT多线程的Apache在静态资源处理方面并不比IIS差.

PHP性能:

ab -k -c100 -n10000 http://127.0.0.1/bs.php # IIS RPS 1180

ab -k -c100 -n10000 http://127.0.0.1:8080/bs.php # Apache RPS 1071

结论:Apache使用了线程化的MPM,所以需要使用线程安全版本的PHP,而线程安全检查有一定开销,所以性能要比IIS+PHP-CGI低一些.

Nginx并非基于多线程实现高并发,而是基于epoll(Linux),kqueue(FreeBSD)事件驱动的异步网络IO机制.Nginx在Windows上用的是最原始的select,而不是Windows的IOCP,所以Windows版Nginx仅仅定位于测试和开发.要发挥Nginx真正的性能,必须在Linux或者FreeBSD上.

Apache虽然在Windows上用的也是select的系统调用,但是Apache的WINNT这个MPM是一个多线程的MPM,所以在非高并发(比如100并发)的情况下处理静态资源甚至比IIS还有优势.另外,Apache在Linux上的同样存在使用epoll的MPM,比如2.4系列默认的event MPM,就是一个epoll事件驱动的架构,主进程管理多个工作进程,每个工作进程又有多个线程,使用epoll进行异步网络IO,这是Apache面对Nginx挑战做出的有力回应.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值