Workers stop responding to requests due to Unable to execute HTTP request: Timeout waiting for connection from pool
Alluxio Version: 2.9.6
Describe the bug We have a cluster of 24 worker nodes. After approximately 6 minutes of operation under a high read load, all threads on the worker are blocked and all new requests fail with errors.
2026-05-19 14:25:12,030 WARN [BlockDataReaderExecutor-761](LogUtils.java:135) - Exception occurred while reading data for read request BlockReadRequest{chunkSize=1048576, end=67108864, id=405874409642, openUfsBlockOptions=ufs_path: "s3://path/description/description__segment0027_0.orc"
offset_in_file: 11408506880
block_size: 67108864
maxUfsReadConcurrency: 32
mountId: 4620979423686187726
no_cache: false
, promote=false, sessionId=344728738333690027, start=0, positionShort=false}. Session 344728738333690027: com.amazonaws.SdkClientException: Unable to execute HTTP request: Timeout waiting for connection from poolThis behavior only occurs with large ORC files (over 20 Gb).
When the problem occurs, netstat shows about 400 open connections to the s3 endpoint with a high Recv-Q (data is not read from the buffers).
The only way to restore the connection is by restarting the worker.
Worker Parameters
alluxio.underfs.s3.admin.threads.max: 30
alluxio.underfs.s3.upload.threads.max: 80
alluxio.underfs.s3.threads.max: 350
alluxio.worker.network.async.cache.manager.threads.max: 64
alluxio.worker.network.async.cache.manager.queue.max: 64
alluxio.worker.network.reader.buffer.size: 16MB
alluxio.worker.network.block.writer.threads.max: 128
alluxio.worker.network.block.reader.threads.max: 512
alluxio.worker.network.keepalive.time: 30s
alluxio.worker.network.keepalive.timeout: 30sTo Reproduce Steps to reproduce the behavior (as minimally and precisely as possible)
Expected behavior A clear and concise description of what you expected to happen.
Urgency Describe the impact and urgency of the bug.
Are you planning to fix it Please indicate if you are already working on a PR.
Additional context
thread dump of java process contain many threads like
"alluxio-client-netty-event-loop-RPC-24" #1361 daemon prio=5 os_prio=0 cpu=0.60ms elapsed=3024.17s tid=0x00007f16e001eeb0 nid=0x6b9 runnable [0x00007f0ca33f2000]
java.lang.Thread.State: RUNNABLE
at sun.nio.ch.EPoll.wait([email protected]/Native Method)
at sun.nio.ch.EPollSelectorImpl.doSelect([email protected]/EPollSelectorImpl.java:120)
at sun.nio.ch.SelectorImpl.lockAndDoSelect([email protected]/SelectorImpl.java:124)
- locked <0x000010001512ce88> (a io.netty.channel.nio.SelectedSelectionKeySet)
- locked <0x000010001512cb48> (a sun.nio.ch.EPollSelectorImpl)
at sun.nio.ch.SelectorImpl.select([email protected]/SelectorImpl.java:136)
at io.netty.channel.nio.SelectedSelectionKeySetSelector.select(SelectedSelectionKeySetSelector.java:62)
at io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:814)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:457)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at java.lang.Thread.run([email protected]/Thread.java:829)and
"BlockDataWriterExecutor-9" #2424 daemon prio=5 os_prio=0 cpu=1039.89ms elapsed=2375.45s tid=0x00007f118c0138d0 nid=0x1369 waiting on condition [0x00007f0f988fe000]
java.lang.Thread.State: WAITING (parking)
at jdk.internal.misc.Unsafe.park([email protected]/Native Method)
- parking to wait for <0x000010002f601e80> (a java.util.concurrent.SynchronousQueue$TransferStack)
at java.util.concurrent.locks.LockSupport.park([email protected]/LockSupport.java:194)
at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill([email protected]/SynchronousQueue.java:460)
at java.util.concurrent.SynchronousQueue$TransferStack.transfer([email protected]/SynchronousQueue.java:361)
at java.util.concurrent.SynchronousQueue.take([email protected]/SynchronousQueue.java:920)
at java.util.concurrent.ThreadPoolExecutor.getTask([email protected]/ThreadPoolExecutor.java:1054)
at java.util.concurrent.ThreadPoolExecutor.runWorker([email protected]/ThreadPoolExecutor.java:1114)
at java.util.concurrent.ThreadPoolExecutor$Worker.run([email protected]/ThreadPoolExecutor.java:628)
at java.lang.Thread.run([email protected]/Thread.java:829)Source: Alluxio/alluxio