Nginx
為什麼 Apache 2.4.7 在 ab 測試中與 NginX 1.4.6 一樣快?
我現在很迷茫…
我一直使用 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 和最大預期並發性。