[
https://issues.apache.org/jira/browse/HTTPCLIENT-2146?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Oleg Kalnichevski resolved HTTPCLIENT-2146.
-------------------------------------------
Resolution: Cannot Reproduce
> Non-blocking client stuck in infinite loop
> ------------------------------------------
>
> Key: HTTPCLIENT-2146
> URL: https://issues.apache.org/jira/browse/HTTPCLIENT-2146
> Project: HttpComponents HttpClient
> Issue Type: Bug
> Affects Versions: 5.0.3
> Reporter: Maciej Walkowiak
> Priority: Major
>
> Our service after running for weeks ended up with 100% CPU usage. In a thread
> dump we identified that the issue comes from the Apache HttpClient:
> {code:java}
> "httpclient-dispatch-1" #34 daemon prio=5 os_prio=0 cpu=2658604.25ms
> elapsed=3332.51s tid=0x00007f9438003000 nid=0x3d runnable
> [0x00007f94370f8000] java.lang.Thread.State: RUNNABLE at
> sun.nio.ch.IOUtil.write([email protected]/IOUtil.java:74) at
> sun.nio.ch.IOUtil.write([email protected]/IOUtil.java:50) at
> sun.nio.ch.SocketChannelImpl.write([email protected]/SocketChannelImpl.java:466)
> at org.apache.hc.core5.reactor.IOSessionImpl.write(IOSessionImpl.java:198)
> at
> org.apache.hc.core5.reactor.ssl.SSLIOSession.sendEncryptedData(SSLIOSession.java:462)
> at
> org.apache.hc.core5.reactor.ssl.SSLIOSession.access$700(SSLIOSession.java:71)
> at
> org.apache.hc.core5.reactor.ssl.SSLIOSession$1.outputReady(SSLIOSession.java:186)
> at
> org.apache.hc.core5.reactor.InternalDataChannel.onIOEvent(InternalDataChannel.java:133)
> at
> org.apache.hc.core5.reactor.InternalChannel.handleIOEvent(InternalChannel.java:51)
> at
> org.apache.hc.core5.reactor.SingleCoreIOReactor.processEvents(SingleCoreIOReactor.java:179)
> at
> org.apache.hc.core5.reactor.SingleCoreIOReactor.doExecute(SingleCoreIOReactor.java:128)
> at
> org.apache.hc.core5.reactor.AbstractSingleCoreIOReactor.execute(AbstractSingleCoreIOReactor.java:85)
> at org.apache.hc.core5.reactor.IOReactorWorker.run(IOReactorWorker.java:44)
> at java.lang.Thread.run([email protected]/Thread.java:829) Locked ownable
> synchronizers: <0x00000000c53d0150> (a
> java.util.concurrent.locks.ReentrantLock$NonfairSync) <0x00000000c540d118> (a
> java.util.concurrent.locks.ReentrantLock$NonfairSync)
> {code}
> We're using following configuration for the non-blocking client:
> {code:java}
> final PoolingAsyncClientConnectionManager connectionManager =
> PoolingAsyncClientConnectionManagerBuilder.create()
> .setPoolConcurrencyPolicy(PoolConcurrencyPolicy.LAX)
> .setConnectionTimeToLive(connectionTimeToLive)
> .setMaxConnTotal(30)
> .setMaxConnPerRoute(30)
> .build();
> final CloseableHttpAsyncClient httpclient =
> HttpAsyncClients.custom()
> .setKeepAliveStrategy(DefaultConnectionKeepAliveStrategy.INSTANCE)
> .setConnectionManager(connectionManager)
> .setConnectionReuseStrategy(DefaultConnectionReuseStrategy.INSTANCE)
> .build();
> {code}
> This issue seems to be similar to
> https://issues.apache.org/jira/browse/HTTPCORE-605 although I am not sure if
> its the same. We're also not able to reproduce it, but we are confident it
> was related to network issues or the response sent from the server because
> the problem persisted after restarting the service.
> Do you know if the underlying issue has been solved in any of the newer
> `httpcomponents-core` versions (5.0.3 or 5.1)? Or is there a known workaround
> to handle such scenario to avoid exhausting the CPU?
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]