ab作壓力測試時connection reset by peer自動退出的解決
- 用apache自帶的ab工具作網站的壓力測試時,一旦鏈接數過多,就會產生一個錯誤:
apr_socket_recv: Connection reset by peer
而後ab就會自動退出。
- 實際上,這是ab的一個特性,遇到嚴重的網絡錯誤後,就會退出測試,由於這種錯誤說明網絡存在其餘問題,可是隻要服務器返回數據,哪怕是數據不對,ab也會繼續下去,可是會記錄數據長度不對。
- 但事實上是:在高壓力下,偶爾的一兩個請求被阻止,這是一個正常的狀況,特別是有防火牆或入侵檢測系統的狀況下,這種事情會常常發生。那麼ab有沒有參數來跳過這種錯誤,使測試繼續下去呢?
- 其實仔細看man ab,會發現ab自己就有這個參數:
-r Don't exit on socket receive errors.
apache
- -r參數就是「在遇到socket接收錯誤後,不退出測試」,因此,解決ab遇到
Connection reset by peer
錯誤就自動退出的問題很是簡單,加一個-r參數就好。