2012-05-14 124 views
5

我使用Netty構建了一個簡單的TCP服務器,我想用JMeter進行基準測試。我正在使用JMeter TCP採樣器,使用BinaryTCPClientImpl類名來發送字節。我已經檢查過「沒有延遲」和「重新使用連接」。我假設這些是針對SO_NODELAY和SO_REUSEADDR的。我正在運行75個線程,每個線程執行1000個TCP請求。我不斷地看到請求的約11%會失敗:Netty + JMeter,連接重用時出錯

500 java.net.SocketException異常:軟件導致連接中止:套接字寫入錯誤

如果我取消「重用連接」,那麼所有75000個請求沒有一個錯誤就能成功,但吞吐量只有它的33%。

有什麼我需要做我的Netty服務器來防止這些錯誤?

回答

0

我應該注意我的服務器是這樣工作的:接受連接,接收一些數據,發送一些數據,一旦數據發送關閉連接。 JMeter文檔說,TCP採樣器關閉連接,除非「重用套接字」被選中,所以我想這不是SO_REUSEADDR。我假設在某些情況下,客戶端發送數據,接收數據,並且在服務器關閉套接字之前,客戶端嘗試再次發送數據,然後服務器關閉套接字,JMeter認爲請求失敗。

因此,解決方案是不檢查「重用地址」。關閉套接字每個請求都是預期的行爲,因爲我的客戶端通信相對較少。

+0

您可能應該將此添加到您的原始問題:) – Daan

+0

我認爲這是答案。 – NateS