'Root cause of java.net.ConnectException / java.net.SocketException
We’re using an apache CachingHttpClient with a PoolingHttpClientConnectionManager configured and all accessed via a Spring RestTemplate.
Most of our connectivity is from Azure -> on-prem service using the same url. Under production load we get occasional exceptions above showing “Connection timed out: connect” or “connect timed out”, they both share the same root cause:
Java.net.PlainSocketImpl.waitForConnect
We’ve had a few stabs at configuring the PoolingHttpClientConnectionManager with maxConnections/maxConnectionsPerRoute. From default 20/2 -> 40/8
This has improved our application throughput but still some connections timeout.
What I’m struggling with is knowing whether waitForConnect means the 40/8 config is throttling our application and connections are waiting for free routes OR the pooled connection / route is free but there is network latency preventing the connection from being made.
I hope that makes sense. I have debug logging on the apache classes but it’s still not clear to me.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
