具体不多说了,直接上截图:
各个WebServer的软件版本号:
Apache 2.2.16.0,使用Zend Server自带的那个Apache2。
Lighttpd 1.4.28,cygwin编译版本。
Nginx 1.0.6,官方发布版本。
Ngwsx,支持iopc模式的分支,https://github.com/zxy050/ngwsx。执行AB的在另外一台Ubuntu Server上进行,主要进行两种测试:
ab -t 10 .......
ab -c 100 -n 1000 .......
取三个软件的测试结果做横向对比。
最终结论:
-t 10模式下,rps在14.8x - 15.1x之间。
-c 100 -n 1000模式下,rps在15.0x - 15.1x之间。
Apache开启Gzip压缩输出,很不幸的,结果还差一些。
-t 10,rps在14.6x - 14.8x之间。
-c 100 -n 1000,rps在14.7x - 14.8x左右。
Nginx官方版本
不知道为什么始终没法让worker_processes > 1,一旦> 1,就无法正常访问,所以只好用1测试,系统进程会存在两个nginx.exe,一个是守护进程,另外一个worker进程,内置启动默认4个线程。默认开启gzip压缩输出。
-t 10模式下,rps在15.9x - 16.1x之间。
-c 100 -n 1000模式下,rps在19.7x - 19.9x之间。
是的,高并发模式下,看得出Nginx的工作情况更好些,工作进程CPU主要在%3 - %5之间波动。Nginx的ngwsx分支
测试途中,引起同事兴趣,建议我下载该版本做对比测试,遂行之。配置处处了Events里面可选iopc,且配置参数有些不同外,其他与nginx别无二致。这个分支可以使用 worker_processes 4,但是貌似没作用,启动后,只有一个ngwsx.exe进程,默认线程1。
压力测试结果与Nginx官方版本相仿(略低,平均0.1 - 0.05之间,可以忽略不计了)。
但是高并发模式下,CPU占用高达25%,但是他也就是维持在25%,由于当时心急与想测试Lighttpd,没有注意看,他是不是将计算分摊到4个CPU的核心上了。
Lighttpd cygwin编译版本
本来没寄望Lighttpd会超过Nginx,因为很熟悉了,启动后,一个Lighttpd.exe进程,线程数3。不过还是有些惊喜:
-t 10模式下,rps在16.5x - 16.7x之间。
-c 100 -n 1000模式下,rps在19.3x - 19.5x之间。
看得出,在-t压力测试下,lighttpd的表现更好些。这个测试基本上都使用WebServer的默认配置,也有部分配置进行调优,如Apache的mpm_winnt,默认是150,启动后工作进程线程数是157,然后调整到500,线程数是507,但是对测试完全没有影响,而内存、CPU的使用也不见疯涨。
测试过程中,对另外一台UbuntuServer的试验机进行了等价的压力测试,ApacheServer,版本号没去查,CPU是AMD 速龙2.4G,4核(据说,我没去求证),4G内存。不过测试结果和Windows的Apache结果相近,没有惊喜,也没有失望。不过我清楚一点,Nginx和Lighttpd在Linux Server上,通过对各项参数调优,性能的提高会比ApacheServer要高(这个Apache也是我调整过mpm的MaxClients的),但是是否能高得过在Windows的表现呢?这个虽然是看似明显的问题(根据经验应该是Linux的IO性能要好些),不过还很难说,只有实际测试了才知道。
明天会对三个服务器运行PHP的模型进行测试,当时然是Windows下的。如果时间允许,会在试验机上,静态编译nginx、Lighttpd、PHP,再做对比。
附上截图,不然大家说我空口说白话,截图的内容没什么,就是Windows下集成了可自定义配置的Nginx、Lighttpd、PHP的环境包。
最后一张图,万恶的ZendServer,他的小九九,明天再和大家分享。