Our response timeout is set to 2,000ms. This is a request that ended up with a response timeout: 62.xxx.xxx.xxx,23:59:47.606,A,1,A,5,A,4,B,,10.15.15.18:8081,,273,569,0,776,http.responseTimeout,23:59:48.382 If we log this error that means the 'failed' method of our AsyncResponseConsumer received an exception that is an instance of a 'java.net.SocketTimeoutException'. Here the trace in our error log: 2019-06-25 23:59:48 [62.xxx.xxx.xxx] ventusproxy : ToDi 2.1 : xxxxx : GetAccomodationAvail Response timeout java.net.SocketTimeoutException: 2,000 MILLISECONDS at org.apache.hc.core5.io.SocketTimeoutExceptionFactory.create(SocketTimeoutExceptionFactory.java:50) at org.apache.hc.core5.http.impl.nio.AbstractHttp1StreamDuplexer.onTimeout(AbstractHttp1StreamDuplexer.java:378) at org.apache.hc.core5.http.impl.nio.AbstractHttp1IOEventHandler.timeout(AbstractHttp1IOEventHandler.java:81) at org.apache.hc.core5.http.impl.nio.ClientHttp1IOEventHandler.timeout(ClientHttp1IOEventHandler.java:39) at org.apache.hc.core5.reactor.InternalDataChannel.onTimeout(InternalDataChannel.java:188) at org.apache.hc.core5.reactor.InternalChannel.checkTimeout(InternalChannel.java:67) at org.apache.hc.core5.reactor.SingleCoreIOReactor.checkTimeout(SingleCoreIOReactor.java:232) at org.apache.hc.core5.reactor.SingleCoreIOReactor.validateActiveChannels(SingleCoreIOReactor.java:165) at org.apache.hc.core5.reactor.SingleCoreIOReactor.doExecute(SingleCoreIOReactor.java:127) at org.apache.hc.core5.reactor.AbstractSingleCoreIOReactor.execute(AbstractSingleCoreIOReactor.java:81) at org.apache.hc.core5.reactor.IOReactorWorker.run(IOReactorWorker.java:44) at java.lang.Thread.run(Thread.java:748) The point is that the total time consumed by the request/response is just 776ms (end = 23:59:48.382, start = 23:59:47.606). Finally the http traces belonging to this request/response, where the start and end dates match perfectly: 23:59:47.606 ex-017E91C3: preparing request execution 23:59:47.606 ex-017E91C3: target auth state: UNCHALLENGED 23:59:47.606 ex-017E91C3: proxy auth state: UNCHALLENGED 23:59:47.606 ex-017E91C3: acquiring connection with route {}->http://10.15.15.18:8081 23:59:47.606 ex-017E91C3: acquiring endpoint (1,000 MILLISECONDS) 23:59:47.606 ex-017E91C3: endpoint lease request (1,000 MILLISECONDS) [route: {}->http://10.15.15.18:8081][total kept alive: 131; route allocated: 2 of 1500; total allocated: 208 of 1500] 23:59:47.606 ex-017E91C3: endpoint leased [route: {}->http://10.15.15.18:8081][total kept alive: 130; route allocated: 2 of 1500; total allocated: 208 of 1500] 23:59:47.606 ex-017E91C3: acquired ep-017E91C2 23:59:47.606 ex-017E91C3: acquired endpoint ep-017E91C2 23:59:47.606 ex-017E91C3: executing POST /ApiServlet.Srv HTTP/1.1 23:59:47.606 ep-017E91C2: start execution ex-017E91C3 23:59:47.606 ep-017E91C2: executing exchange ex-017E91C3 over i/o-00970788 23:59:47.607 ex-017E91C3: send request POST /ApiServlet.Srv HTTP/1.1, entity len 810 23:59:47.607 ex-017E91C3: produce request data 23:59:47.607 ex-017E91C3: produce request data, len 810 bytes 23:59:47.607 ex-017E91C3: end of request data 23:59:48.382 ex-017E91C3: execution failed: 2,000 MILLISECONDS 23:59:48.382 ex-017E91C3: request failed: 2,000 MILLISECONDS 23:59:48.382 ep-017E91C2: close IMMEDIATE 23:59:48.382 ep-017E91C2: endpoint closed 23:59:48.382 ep-017E91C2: discarding endpoint 23:59:48.382 ep-017E91C2: releasing endpoint 23:59:48.382 ep-017E91C2: connection released [route: {}->http://10.15.15.18:8081][total kept alive: 106; route allocated: 1 of 1500; total allocated: 211 of 1500] Important: if we are not wrong, it seems this is only happening when keep alive connections are used. If we disable keep alive from the pool, all response timeouts disappear.