获取SocketTimeOutException:读取内部其他微弹簧启动服务的休息调用的超时时间

时间:2017-05-11 14:21:34

标签: java spring rest

Encountered Internal Server Exception
org.springframework.web.client.ResourceAccessException: I/O error on GET request for "localhost:8034/v1/users/81ebc4ca-2496-4cc3-b533-311f237b6fe9/crop_details/10/summary": Read timed out; nested exception is java.net.SocketTimeoutException: Read timed out
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:666)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:621)
    at org.springframework.web.client.RestTemplate.getForEntity(RestTemplate.java:321)
    at ...
    at java.lang.Thread.run(Thread.java:745)

Caused by: java.net.SocketTimeoutException: Read timed out
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
    at java.net.SocketInputStream.read(SocketInputStream.java:170)
    at java.net.SocketInputStream.read(SocketInputStream.java:141)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
    at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:704)
    at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:647)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1535)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1440)
    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
    at org.springframework.http.client.SimpleBufferingClientHttpRequest.executeInternal(SimpleBufferingClientHttpRequest.java:84)
    at org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:48)
    at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:53)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:652)
    ... 91 common frames omitted

场景 - 当我尝试从一个服务(在8033端口上运行)使用JMeter for Rest API加载测试时。它在内部调用RestTemplate到其他服务休息API(8034上面的一个)。对于少数请求它工作正常但是当我超过10个并发请求时它开始给出上述错误。

到目前为止我尝试了什么

  • 我已尝试使用不同的ClientManagers来设置连接和读取超时值。
  • 还尝试使用PoolConnectionMangers。
  • 自定义保持活力策略。
  • 为上述超时属性设置JDK值。

但仍然遇到同样的问题。

推荐链接

同样的事情在我的本地机器上工作10000请求没有任何问题。

Box / Server详细信息 - 3.7 GB / 50GB单核CPU

0 个答案:

没有答案