Mule thread pool size cap

匿名 (未验证) 提交于 2019-12-03 10:10:24

问题:

I am trying to set a thread pool size to a number greater than the number of cores of the machine I'm testing my Mule app on.

<vm:connector name="persistent" doc:name="VM">    <receiver-threading-profile        maxThreadsActive="64"        poolExhaustedAction="WAIT"        threadWaitTimeout="-1"/>    <vm:queue-profile maxOutstandingMessages="5000">        <default-persistent-queue-store/>    </vm:queue-profile> </vm:connector> 

Eventually, what I see is that Mule caps the number of threads to the number of cores of my machine. Even If I try to set the default pool size in a general configuration element, I still get the same limitation.

<configuration doc:name="Configuration">     <default-threading-profile maxThreadsActive="64" maxThreadsIdle="32"/> </configuration> 

This is what happens (my machine has 4 cores)

INFO  2014-11-11 11:12:22,023 [[App-1.0].persistent.receiver.03] org.mule.api.processor.LoggerMessageProcessor: Order 21036 INFO  2014-11-11 11:12:22,025 [[App-1.0].persistent.receiver.01] org.mule.api.processor.LoggerMessageProcessor: Order 21037 INFO  2014-11-11 11:12:22,030 [[App-1.0].persistent.receiver.02] org.mule.api.processor.LoggerMessageProcessor: Order > 6 21038 INFO  2014-11-11 11:12:23,040 [[App-1.0].persistent.receiver.04] org.mule.api.processor.LoggerMessageProcessor: Order 21040 INFO  2014-11-11 11:12:23,040 [[App-1.0].persistent.receiver.03] org.mule.api.processor.LoggerMessageProcessor: Order 21039 INFO  2014-11-11 11:12:23,041 [[App-1.0].persistent.receiver.01] org.mule.api.processor.LoggerMessageProcessor: Order > 6 21041 INFO  2014-11-11 11:12:23,043 [[App-1.0].persistent.receiver.02] org.mule.api.processor.LoggerMessageProcessor: Order 21042 INFO  2014-11-11 11:12:24,060 [[App-1.0].persistent.receiver.02] org.mule.api.processor.LoggerMessageProcessor: Order < 3 27 INFO  2014-11-11 11:12:24,061 [[App-1.0].persistent.receiver.03] org.mule.api.processor.LoggerMessageProcessor: Order 24 INFO  2014-11-11 11:12:24,062 [[App-1.0].persistent.receiver.01] org.mule.api.processor.LoggerMessageProcessor: Order > 6 26 INFO  2014-11-11 11:12:24,063 [[App-1.0].persistent.receiver.04] org.mule.api.processor.LoggerMessageProcessor: Order 23 INFO  2014-11-11 11:12:25,081 [[App-1.0].persistent.receiver.04] org.mule.api.processor.LoggerMessageProcessor: Order > 6 29 INFO  2014-11-11 11:12:25,083 [[App-1.0].persistent.receiver.01] org.mule.api.processor.LoggerMessageProcessor: Order < 3 28 INFO  2014-11-11 11:12:25,090 [[App-1.0].persistent.receiver.03] org.mule.api.processor.LoggerMessageProcessor: Order > 6 30 INFO  2014-11-11 11:12:25,092 [[App-1.0].persistent.receiver.02] org.mule.api.processor.LoggerMessageProcessor: Order 31 INFO  2014-11-11 11:12:26,099 [[App-1.0].persistent.receiver.04] org.mule.api.processor.LoggerMessageProcessor: Order > 6 32 INFO  2014-11-11 11:12:26,103 [[App-1.0].persistent.receiver.03] org.mule.api.processor.LoggerMessageProcessor: Order 33 INFO  2014-11-11 11:12:26,103 [[App-1.0].persistent.receiver.02] org.mule.api.processor.LoggerMessageProcessor: Order < 3 34 INFO  2014-11-11 11:12:26,105 [[App-1.0].persistent.receiver.01] org.mule.api.processor.LoggerMessageProcessor: Order 35 INFO  2014-11-11 11:12:27,118 [[App-1.0].persistent.receiver.03] org.mule.api.processor.LoggerMessageProcessor: Order < 3 41 INFO  2014-11-11 11:12:27,119 [[App-1.0].persistent.receiver.04] org.mule.api.processor.LoggerMessageProcessor: Order > 6 40 INFO  2014-11-11 11:12:27,122 [[App-1.0].persistent.receiver.02] org.mule.api.processor.LoggerMessageProcessor: Order < 3 42 INFO  2014-11-11 11:12:27,125 [[App-1.0].persistent.receiver.01] org.mule.api.processor.LoggerMessageProcessor: Order 43 

How do I actually increase the receiver thread pool size to 64?

回答1:

There's another parameter called numberOfConcurrentTransactedReceivers which is somehow hidden. I couldn't find it anywhere in the Mule doc website, not even in Dossot's book. The following configuration did the trick for me:

<vm:connector     name="order.vm.connector"     createMultipleTransactedReceivers="true"     numberOfConcurrentTransactedReceivers="64" >      <receiver-threading-profile         maxThreadsActive="64"         poolExhaustedAction="WAIT"         threadWaitTimeout="-1" />      <vm:queue-profile maxOutstandingMessages="4096">         <default-persistent-queue-store />     </vm:queue-profile>  </vm:connector>  <vm:endpoint     exchange-pattern="one-way"     name="order.vm.endpoint"     path="order.vm"     connector-ref="order.vm.connector" /> 


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!