关于Apache与Nginx 的一些测试
1,在用AB(apache benchmark) 对apache进行测试的时候,可以得到明显的结论html网页的请求和打开速度是php网页的N 倍。原因就不多说了,php的程序结构和数据库设计影响了页面的执行响应时间。
因此对于很多网站来说,如果对于页面有较高的要求的话还是静态化比较适合,注意是真的静态化。
2,服务器上虽然安装了nginx,但是对于Nginx 能提升性能到什么地步,真的没有一个概念,使用IE同时访问apache和nginx 对应的相同代码的网站,多次对比测试,感觉不到任何明显的不同; 但是在用AB 进行静态文件的对比测试的时候,就发觉了比较大的不同:
2.1 ab 对于apache的测试
ab -n 200000 -c 20 -k http://www.6688.cc/index.html
测试结果:
Concurrency Level: 20
Time taken for tests: 14.340333 seconds
Complete requests: 200000
Failed requests: 0
Write errors: 0
Non-2xx responses: 200014
Keep-Alive requests: 198030
Total transferred: 101118390 bytes
HTML transferred: 58004060 bytes
Requests per second: 13946.68 [#/sec] (mean)
Time per request: 1.434 [ms] (mean)
Time per request: 0.072 [ms] (mean, across all concurrent requests)
Transfer rate: 6886.03 [Kbytes/sec] received
2.2 ab 对于nginx的测试
ab -n 200000 -c 20 -k http://www.6688.cc:8081/index.html
Concurrency Level: 20
Time taken for tests: 7.399364 seconds
Complete requests: 200000
Failed requests: 0
Write errors: 0
Non-2xx responses: 200004
Keep-Alive requests: 198010
Total transferred: 761605282 bytes
HTML transferred: 730414608 bytes
Requests per second: 27029.35 [#/sec] (mean)
Time per request: 0.740 [ms] (mean)
Time per request: 0.037 [ms] (mean, across all concurrent requests)
Transfer rate: 100516.07 [Kbytes/sec] received
------------------------------------
对于静态文件来说,nginx性能提升了一倍。而且多次测试发现apache会出现性能下降的现象。而nginx基本不出现这一问题。
而对于动态文件的测试发觉Nginx 并不明显,推测可能是因为数据库的调用存在瓶颈,所以导致了不明显,而且就算是nginx中使用的是fastcgi模式,也没有传说中的那么牛X,而关键问题还是出现在数据库瓶颈和程序设计上
而且从进程数量上来说nginx 也比httpd 少很多,资源占用情况暂时未对比。httpd 在大量请求错误发生后会存在大量的垃圾进程。
------------------------------------
初步结论是:
1,改善程序结构和数据库设计;减少数据库瓶颈
2,如果是file 或者图片模式的服务器用nginx最好(没有试过lighthttpd),而程序服务器从稳健的角度来讲还是用apache比较合适。
3,对于很多人来说php是一门很快的语言,但是实际上在结构上如果设计混乱的话,PHP反而是最差劲的语言。而面向对象的机理可以从结构上减少这种混乱!
4,一台好的服务器可以提升至少1倍的性能(这个好是指同等价位但是相差2-3年左右的配置),这个结论基于静态文件!
补充测试了一下:
利用ab 对某php文件(apache),里面只有phpinfo函数进行了测试,得出的结论是 每秒能完成2000次左右的页面请求。所以如果有人要忽悠你的话,你就懂了!!!
在较差的服务器上 apache只能 完成500/s 次的请求。而nginx 居然可以完成大约1200 次左右的请求。提升了一倍。
但是值得注意的是在对nginx 模式进行大量测试的时候会出现php-cgi 崩溃的问题。暂时不知道是什么原因。也没有去分析。独立Apache下暂时没有这一问题。