RestTemplate Spring SocketTimeoutException

时间:2017-11-29 10:01:58

标签: java spring sockets spring-boot

有时当我通过RestTemplate发布API调用API时,我们会收到Socket Exception。

我们没有对RestTemplate使用setConnectionTimeout和setReadTimeout。

大多数时候(99%),API在没有套接字连接问题的情况下成功执行。但是,有时(1%)我们得到SocketException。

我做了分析,了解什么是默认的readtimeout& HttpUrlConnection的conntimeout。我看到超时都是0和不确定的超时。

这里没有防火墙问题,因为API大部分时间都成功执行99%。

如何调试此问题?对于HttpUrlConnection,默认的readtimeout和connectiontimeout是0吗?

org.springframework.web.client.ResourceAccessException: I/O error on POST request for "{API url}": Connection reset; nested exception is java.net.SocketException: Connection reset
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:633) ~[spring-web-4.3.4.RELEASE.jar!/:4.3.4.RELEASE]
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:595) ~[spring-web-4.3.4.RELEASE.jar!/:4.3.4.RELEASE]
    at org.springframework.web.client.RestTemplate.postForEntity(RestTemplate.java:423) ~[spring-web-4.3.4.RELEASE.jar!/:4.3.4.RELEASE]
Caused by: java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(SocketInputStream.java:209) ~[?:1.8.0_45]
    at java.net.SocketInputStream.read(SocketInputStream.java:141) ~[?:1.8.0_45]
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:246) ~[?:1.8.0_45]
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:286) ~[?:1.8.0_45]
    at java.io.BufferedInputStream.read(BufferedInputStream.java:345) ~[?:1.8.0_45]
    at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:704) ~[?:1.8.0_45]
    at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:647) ~[?:1.8.0_45]
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1535) ~[?:1.8.0_45]
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1440) ~[?:1.8.0_45]
    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480) ~[?:1.8.0_45]
    at org.springframework.http.client.SimpleClientHttpResponse.getRawStatusCode(SimpleClientHttpResponse.java:52) ~[spring-web-4.3.4.RELEASE.jar!/:4.3.4.RELEASE]

0 个答案:

没有答案