[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[jetty-users] Lockup in jetty-client under low threads / slow destination condition
|
While investigating reports of requests being starved in the presence of
other requests to slow destinations, I managed to get embedded
jetty-client 9.3.10 to lock up pretty hard.
My test case uses two HttpClient instances sharing the same Executor
(with 4 threads), Scheduler, and ByteBufferPool. One HttpClient makes
requests to a working plain-HTTP destination, the other to a plain-HTTP
destination that always times out connects.
After a while, all threads block on a Selector.select() with zero keys,
out of ManagedSelector$SelectorProducer.select(), out of
ManagedSelector$SelectorProducer.produce(), out of
ExecuteProduceConsume.produceExecuteConsume(), out of
ExecuteProduceConsume.produceConsume(). At this point, Jetty will not
cleanly shut down.
org.eclipse.jetty.client.HttpClient@78dc4696 - STARTED
+= org.eclipse.jetty.util.thread.Sweeper@1d03459d - STARTED
+= SslContextFactory@106c710e(null,null) - STARTED
+~ http-client-shared{STARTED,4<=4<=4,i=0,q=7} - STARTED
+- org.eclipse.jetty.io.MappedByteBufferPool@794e4b46
+~ org.eclipse.jetty.util.thread.ScheduledExecutorScheduler@529e10f0 -
STARTED
+= org.eclipse.jetty.client.http.HttpClientTransportOverHTTP@71aff321
- STARTED
| +=
org.eclipse.jetty.client.AbstractHttpClientTransport$ClientSelectorManager@5ee8e234
- STARTED
| += org.eclipse.jetty.io.ManagedSelector@59406bd9 id=0 keys=0
selected=0 id=0
| | +- sun.nio.ch.KQueueSelectorImpl@65abf03e keys=0
| += org.eclipse.jetty.io.ManagedSelector@2a5795fe id=1 keys=0
selected=0 id=1
| +- sun.nio.ch.KQueueSelectorImpl@483695b6 keys=0
+- org.eclipse.jetty.util.SocketAddressResolver$Async@246f5d6e
+=
HttpDestination[http://localhost:4111]@3d8fe295,queue=2,pool=DuplexConnectionPool[c=2/20,a=0,i=0]
+- DuplexConnectionPool[c=2/20,a=0,i=0]
org.eclipse.jetty.client.HttpClient@52169758 - STARTED
+= org.eclipse.jetty.util.thread.Sweeper@17f3461a - STARTED
+= SslContextFactory@51a5c5e4(null,null) - STARTED
+~ http-client-shared{STARTED,4<=4<=4,i=0,q=7} - STARTED
+- org.eclipse.jetty.io.MappedByteBufferPool@794e4b46
+~ org.eclipse.jetty.util.thread.ScheduledExecutorScheduler@529e10f0 -
STARTED
+= org.eclipse.jetty.client.http.HttpClientTransportOverHTTP@5f505f2f
- STARTED
| +=
org.eclipse.jetty.client.AbstractHttpClientTransport$ClientSelectorManager@20a52bc4
- STARTED
| += org.eclipse.jetty.io.ManagedSelector@2b3a50ed id=0 keys=0
selected=0 id=0
| | +- sun.nio.ch.KQueueSelectorImpl@70b111fe keys=0
| += org.eclipse.jetty.io.ManagedSelector@24c337f6 id=1 keys=0
selected=0 id=1
| +- sun.nio.ch.KQueueSelectorImpl@56dd5f46 keys=0
+- org.eclipse.jetty.util.SocketAddressResolver$Async@23225908
+=
HttpDestination[http://10.2.45.41:8080]@5db775ed,queue=3,pool=DuplexConnectionPool[c=3/20,a=0,i=0]
+- DuplexConnectionPool[c=3/20,a=0,i=0]
Is there anything else I could investigate or produce to make a useful
bug report?