![使用 ab 對 nginx 進行基準測試:連線被對等方重設 (54)](https://rvso.com/image/567651/%E4%BD%BF%E7%94%A8%20ab%20%E5%B0%8D%20nginx%20%E9%80%B2%E8%A1%8C%E5%9F%BA%E6%BA%96%E6%B8%AC%E8%A9%A6%EF%BC%9A%E9%80%A3%E7%B7%9A%E8%A2%AB%E5%B0%8D%E7%AD%89%E6%96%B9%E9%87%8D%E8%A8%AD%20(54).png)
我最近更新到 nginx 1.0.8,並嘗試對快取的動態頁面(最初由 Django 應用程式透過 proxy_pass 提供服務)和靜態頁面的效能進行基準測試。在這兩種情況下,nginx 都不會服務超過 3 或 4 個請求(即使沒有並發連接),因此 ab 幾乎立即報告:
apr_socket_recv: Connection reset by peer (54)
只有當選擇最多 4 個(或更少)請求時,ab 才能成功完成。
這是為什麼?我嘗試增加工作進程的數量(沒有運氣),但我認為 nginx 應該能夠在不調整任何配置變數的情況下服務超過 4 個請求。難道是我不小心觸發了某種DOS保護機制?
答案1
ab
我在針對簡單的 Node.JS 應用程式執行本機測試時遇到了同樣的問題。我發現的解決方法是使用ab -r
指示Don't exit on socket receive errors
.
但此錯誤的根本原因是您的盒子中可以打開的套接字數量有限。如果您使用的是 OSx,您可以參考此答案來為此限制設定更高的數字: