天天看點

關于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://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下暫時沒有這一問題