Spring boot 原因:java.net.SocketTimeoutException:读取超时

Spring boot 原因:java.net.SocketTimeoutException:读取超时,spring-boot,soap-client,Spring Boot,Soap Client,我有一个SpringBoot2.x应用程序,它正在使用JaxWsProxyFactoryBean进行soap调用。除了一个得到“java.net.SocketTimeoutException:Read timeout”的调用外,所有调用都工作正常。注意事项: 我的应用程序在网络中的soap调用没有问题 唯一有问题的soap调用在我的网络之外,而且问题是零星的 从网络跟踪来看,我的应用程序似乎正在重用连接(连接池) 我的应用程序每天都要向内部(工作的soap服务)和有这些漏洞的外部服务打数百万个

我有一个SpringBoot2.x应用程序,它正在使用JaxWsProxyFactoryBean进行soap调用。除了一个得到“java.net.SocketTimeoutException:Read timeout”的调用外,所有调用都工作正常。注意事项:

  • 我的应用程序在网络中的soap调用没有问题
  • 唯一有问题的soap调用在我的网络之外,而且问题是零星的
  • 从网络跟踪来看,我的应用程序似乎正在重用连接(连接池)
  • 我的应用程序每天都要向内部(工作的soap服务)和有这些漏洞的外部服务打数百万个电话
问题:

  • 如何在SpringBoot2.0中配置http连接池
  • 如果禁用HTTP连接池,问题是否可能会消失
  • 如果禁用HTTP连接池,我将看到什么类型的性能影响(以毫秒为单位估计)
  • 如果问题与连接池无关,那么问题的原因可能是什么
如果你需要任何其他细节,请告诉我

部分堆栈跟踪:

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:171)
 at java.net.SocketInputStream.read(SocketInputStream.java:141)
 at sun.security.ssl.InputRecord.readFully(InputRecord.java:465)
 at sun.security.ssl.InputRecord.read(InputRecord.java:503)
 at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:975)
 at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:933)
 at sun.security.ssl.AppInputStream.read(AppInputStream.java:105)
 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:735)
 at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:678)
 at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1587)
 at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
 at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
 at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:347)
 at org.apache.cxf.transport.http.URLConnectionHTTPConduit$URLConnectionWrappedOutputStream$2.run(URLConnectionHTTPConduit.java:377)
 at org.apache.cxf.transport.http.URLConnectionHTTPConduit$URLConnectionWrappedOutputStream$2.run(URLConnectionHTTPConduit.java:373)
 at java.security.AccessController.doPrivileged(Native Method)
 at org.apache.cxf.transport.http.URLConnectionHTTPConduit$URLConnectionWrappedOutputStream.getResponseCode(URLConnectionHTTPConduit.java:373)
 at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.doProcessResponseCode(HTTPConduit.java:1597)  
 at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1625)
 at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1570) 
 at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1371)  ... 

谢谢, 布莱恩