We have an odd issue wherein at Tomcat(TomEE) startup apache-hc execution
requests throw a NoHttpResponseException within less than 1 second. After a
few minutes this behavior completely stops and isn’t seen again until the next
time we stop and restart Tomcat(TomEE).
Basic apache-hc configuration information:
- single static CloseableHttpClient instance initialized at container startup;
- all requests managed via PoolingHttpClientConnectionManager
- connection timeout 6000ms
- read timeout 6000ms
- we use 4 retries
- the typical timing for each HttpClient.execute(HttpUriRequest,HttpContext)
during this startup period is that they fail very fast:
try-1: ~ 5ms
try-2: ~250ms
try-3: ~500ms
try-5: ~700ms
We measure the elapsed milli-seconds with respect to “execute()”. It seems
very odd that execute() fails so fast given the apache-hc settings. It isn’t
every execution request that fails. But, a very high percentage of them do
exhibit this behavior during the initial ~5 minutes after Tomcat(TomEE) begins
dispatching inbound requests.
The inbound HTTP request volume inbound is ~70 RPS(requests per second).
After ~5 minutes this type of error never repeats. We have logging in place
that verifies all the apache-hc components are fully instantiated prior to any
request being processed.
Version information:
apache-hc: 4.5.2
java : 1.8r60
tomcat : 7.0.68
tomee : 1.7.4
Any ideas at all given the minimal information that I have to provide are
greatly appreciated.
—
Pete