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://test.xxx.com/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://test.xxx.com: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下暫時沒有這一問題