Unable to achieve task concurrency

Hello,

We are trying to run 10 ingestion tasks concurrently, each task is configured with maxnumberofConcurenttasks=1 and worker.capacity is set to 12. Each worker has 2g xmx, xms and 4g direct memory, and middlemanager has a resource limit of 32g But all the tasks fail suddenly after few minutes. However everything runs fine when we are running only 5 tasks at a time.

Overlord Logs :

WARN [qtp1526060911-102] org.apache.druid.indexing.overlord.http.OverlordResource - Failed to stream log for task index_parallel_payments_whole_10_ifnbbdjo_2020-02-27T14:01:19.395Z
org.jboss.netty.channel.ChannelException: Faulty channel in resource pool

Middle Manager logs:

ERROR [forking-task-runner-4] com.google.common.util.concurrent.ExecutionList - RuntimeException while executing runnable com.google.common.util.concurrent.Futures$4@3ebe35f6 with executor com.google.common.util.concurrent.MoreExecutors$SameThreadExecutorService@52fe6693
java.util.concurrent.RejectedExecutionException: Task org.apache.druid.indexing.worker.WorkerTaskManager$$Lambda$92/1668569990@379360b rejected from java.util.concurrent.ThreadPoolExecutor@48a39ce6[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 24]
	at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2063) ~[?:1.8.0_232]
	at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:830) ~[?:1.8.0_232]
	at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1379) ~[?:1.8.0_232]
	at java.util.concurrent.Executors$DelegatedExecutorService.execute(Executors.java:668) ~[?:1.8.0_232]
	at org.apache.druid.indexing.worker.WorkerTaskManager.submitNoticeToExec(WorkerTaskManager.java:184) ~[druid-indexing-service-0.17.0.jar:0.17.0]
	at org.apache.druid.indexing.worker.WorkerTaskManager.access$000(WorkerTaskManager.java:79) ~[druid-indexing-service-0.17.0.jar:0.17.0]
	at org.apache.druid.indexing.worker.WorkerTaskManager$2.onSuccess(WorkerTaskManager.java:248) ~[druid-indexing-service-0.17.0.jar:0.17.0]
	at org.apache.druid.indexing.worker.WorkerTaskManager$2.onSuccess(WorkerTaskManager.java:244) ~[druid-indexing-service-0.17.0.jar:0.17.0]
	at com.google.common.util.concurrent.Futures$4.run(Futures.java:1181) ~[guava-16.0.1.jar:?]
	at com.google.common.util.concurrent.MoreExecutors$SameThreadExecutorService.execute(MoreExecutors.java:297) ~[guava-16.0.1.jar:?]
	at com.google.common.util.concurrent.ExecutionList.executeListener(ExecutionList.java:156) [guava-16.0.1.jar:?]
	at com.google.common.util.concurrent.ExecutionList.execute(ExecutionList.java:145) [guava-16.0.1.jar:?]
	at com.google.common.util.concurrent.ListenableFutureTask.done(ListenableFutureTask.java:91) [guava-16.0.1.jar:?]
	at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:384) [?:1.8.0_232]
	at java.util.concurrent.FutureTask.set(FutureTask.java:233) [?:1.8.0_232]
	at java.util.concurrent.FutureTask.run(FutureTask.java:274) [?:1.8.0_232]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_232]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_232]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_232]

Am I missing any config here? My current config params are
druid.global.http.numConnections = 40

druid.server.http.numThreads=60

druid.indexer.fork.property.druid.processing.buffer.sizeBytes=100000000

druid.query.groupBy.maxMergingDictionarySize=1000000000

druid.indexer.fork.property.druid.processing.numMergeBuffers=2

druid.indexer.fork.property.druid.processing.numThreads=1

Can anyone help me out here? Thank you.