IIS与Nginx实测对比[1]:虚拟机处理静态文件


由于机器难找,所以暂时在虚拟机下进行对比,好处是系统的切换比较快,省了不少时间,其二是由于硬件差异趋近于无,所以相对结果还是比较客观的,除此之外还可以看看在有限的硬件条件下系统的响应能力。此次测试的内容是测试IIS和Nginx对纯静态文件的处理能力,动态处理能力将在下一回合见分晓。

一、硬件环境
本次测试是在一台双核64位 AMD Athlon5400+ ,内存2G的桌面机上进行。

二、系统环境
宿主系统是ubuntu10.04 虚拟机环境是virtaul box,虚拟2cpu,1G内存的虚拟机2台
nginx运行在ubuntu 10.04 服务器版,IIS是6.0版,运行在windows 2003 R2上,作为控制组的apache和nginx在同一个虚拟机上
nginx的系统是ext4的文件系统,IIS6在NTFS文件系统

三、测试工具
apache ab,可能有人会说ab如何如何,不过暂时没有找到其他的压力测试工具,对于所有的server用同一种工具还是蛮公平的,如果你觉得ab的某些特性可能会造成测试的差异,或者你有更好的工具,可以跟我联系,我会及时更新测试的结果。

四、测试方法
测试针对每个server进行5轮测试,ab的参数分别为

  1. -n 10000   -c 200
  2. -n 50000   -c 200
  3. -n 50000   -c 400
  4. -n 100000 -c 400
  5. -n 100000 -c 800
每一轮测试交替增长并发数和测试的总请求数,以求压迫出server的最终能力。
在测试前我用了apache作为控制组结果。

五、测试结果

控制组结果(Apache)
            1        2          3         4
request/sec     651.39      634.99       675.26      652.5
time taken     15.352       15.748       14.787     15.326
time per request   1.535       1.575       1.479       1.533
            
request/sec     522.58      489.75      496.18       493.49
time taken      95.679      102.094     100.769        101.32
time per request   1.924       2.042       2.015       2.026

每一组我都测试了4次,本来该取一个平均值,不过控制组我就省了,因为后面的结果基本上一目了然,不用和控制组对比了,这里我们可以看到,apache在第三轮就败下阵来,实际上第三轮我执行了好几次,但是实在是一次都执行不了,故放弃了。

接下来是IIS的数据
            1      2      3      4
request/sec     2006.2 1731.44   1719.33  1735.58
time taken       4.98   5.776   5.816    5.762
time per request    0.498   0.578   0.582   0.576
            
request/sec       1971.89   2031.24   1965.61   1928.97
time taken         25.356   24.615   25.437   25.921
time per request   0.507   0.492   0.509   0.518
            
request/sec       2013.22         
time taken      24.836         
time per request   0.497      

IIS成功的挺到了第三轮,不过没有挺过就挂了,其实在第2轮就出现过请求超时,不过还能继续跑,第三轮成功跑完一次,也就是有数据这次,之后就再也跑不动了。从数据上看来IIS比Apache快不少,至少有两倍的性能提升,看来IIS5到IIS6进步不小。

最后是Nginx的数据:
            1      2       3         4
request/sec     2538.52  2403.67  2269.01  2587.13
time taken     3.939    4.16   4.407    3.865
time per request   0.394   0.416   0.441   0.387
            
request/sec    2609.65   2773.08   2808.05   2854.92
time taken     19.16   18.031   17.806   17.514
time per request   0.383   0.361   0.356   0.35
            
request/sec    2792.14   2886.61   2832.07   2837.92
time taken     17.907   17.321   17.655   17.619
time per request   0.358   0.346   0.353   0.352
            
request/sec    2857.75   2880.57   2881.52   2919.46
time taken     34.993   34.715   34.704   34.253
time per request   0.35   0.347   0.347   0.343
            
request/sec    2733.6         
time taken    36.582         
time per request   0.366

Nginx成功的撑到了第5轮才败下阵来,请注意每一轮的数据,Nginx的性能相当的稳定,稳定性和性能都非常的理想,在静态文件处理的能力上比Apache有数量级上的提升,对IIS6也是绝对压倒性的优势,无论是处理速度还是并发能力都是本次测试的绝对冠军。

下集预告:
下一轮测试将对比Nginx和Tornado以及IIS6加上ASP.NET在动态处理能力上的性能对比。精采绝伦绝对不容错过

如果对本次测试的过程以及结果有异议,请留言说明,请不要留下 “单纯比对静态文件没有意义”等没有意义的回复,期待您的精彩回复。

作者博客:http://Alexander-Lee.cnblogs.com

相关内容