我有一個Java程序創建多個線程,其中每個線程發出POST請求。它在大多數情況下都能正常工作,但是在負載較重的情況下,它會引發Connection reset異常。例如,當我發出40個同時請求時,幾次我得到Connection重置異常。HttpClient的executeMethod拋出java.net.SocketException:連接重置
Caught: java.net.SocketException: Connection reset
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:
at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:105
at org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.
at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMetho
at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodB
at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.j
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(Htt
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMe
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.jav
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.jav
在我的Java代碼,當我提出一個請求等待它完成,然後再拍要求我創建的HttpClient的
HttpClient client = new HttpClient();
實例中的問題不會發生。但是,當我將程序轉換爲多線程時,我遇到了這個問題。
任何人都可以請指出我怎樣才能防止這種異常,然後再次重試。從谷歌,我發現答案可能是沿着使用
org.apache.commons.httpclient.util.IdleConnectionTimeoutThread
我想在此同時使用這一點,但其他任何建議,歡迎的線路。
是否有任何日誌服務器端可能會給你一個線索,爲什麼會發生這種情況? – Nattrass 2014-10-20 20:45:25