Nginx

為什麼 Apache 2.4.7 在 ab 測試中與 NginX 1.4.6 一樣快?

  • April 2, 2015

我現在很迷茫…

我一直使用 Nginx 來提供靜態文件並將 php 傳遞給 Apache。我建構了一個 4GB 記憶體的新盒子,安裝了帶有 mpm_prefork 模組的 Apache 2.4.7 和 NginX 1.4.6。我設置了我需要的東西並決定執行一些 ab 測試。我對我所看到的感到震驚。在每個 ab 測試中,Apache 的表現都和 NginX 一樣好。

這適用於 Apache 2.4 嗎?我已經閱讀了 2.4 的性能升級,但是在過去 NginX 會破壞 Apache。我錯過了什麼嗎?

阿帕奇:

Concurrency Level:      100
Time taken for tests:   1.157 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      279000 bytes
HTML transferred:       21000 bytes
Requests per second:    864.65 [#/sec] (mean)
Time per request:       115.654 [ms] (mean)
Time per request:       1.157 [ms] (mean, across all concurrent requests)
Transfer rate:          235.58 [Kbytes/sec] received

Connection Times (ms)
             min  mean[+/-sd] median   max
Connect:       24   32  11.3     27     236
Processing:    27   78  15.6     77     380
Waiting:       26   78  15.6     77     379
Total:         55  109  21.1    104     404

Percentage of the requests served within a certain time (ms)
 50%    104
 66%    116
 75%    121
 80%    123
 90%    129
 95%    135
 98%    162
 99%    173
100%    404 (longest request)

Nginx:

Concurrency Level:      100
Time taken for tests:   1.026 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      362000 bytes
HTML transferred:       21000 bytes
Requests per second:    975.00 [#/sec] (mean)
Time per request:       102.564 [ms] (mean)
Time per request:       1.026 [ms] (mean, across all concurrent requests)
Transfer rate:          344.68 [Kbytes/sec] received

Connection Times (ms)
             min  mean[+/-sd] median   max
Connect:       24   33  14.4     29     223
Processing:    24   34  39.2     28     664
Waiting:       24   34  39.2     28     664
Total:         50   67  42.2     57     691

Percentage of the requests served within a certain time (ms)
 50%     57
 66%     72
 75%     76
 80%     77
 90%     80
 95%     86
 98%     97
 99%    240
100%    691 (longest request)

這在我所有的測試中都是一致的。這個測試是我所有測試中性能差距最大的。通常,Apache 在 NginX 的原始請求/秒中減少約 5%-10%。

如果 Apache 2.4 實際上接近 NginX,那麼我認為設置反向代理以及隨之而來的所有其他復雜性沒有任何意義。

想法?

在這樣的測試中,我希望 Apache 在啟動它們後在整個測試期間保持 100 個子程序處於活動狀態,因此它能夠實現與事件驅動的單程序模型相當的性能Nginx。我敢打賭,如果您將 Apache 的 StartServers 和 MinSpareServers 設置為 100,您甚至可以進一步縮小基準差距。我希望所有 httpd 程序的記憶體使用率會更高,但要實現相同的並發性,這可能是也可能不是很大的缺點,具體取決於您的可用 RAM 和最大預期並發性。

引用自:https://serverfault.com/questions/680063