骡子线程池大小上限 [英] Mule thread pool size cap

查看:137
本文介绍了骡子线程池大小上限的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将线程池大小设置为大于我正在测试我的Mule应用程序的计算机核心数量的数字。

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>

最后,我看到Mule将线程数量限制为机器核心数量。即使我尝试在常规配置元素中设置默认池大小,我仍然会得到相同的限制。

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>

这是发生的事情(我的机器有4个核心)

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

如何将接收器线程池大小实际增加到64?

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

推荐答案

还有一个名为 numberOfConcurrentTransactedReceivers 的参数,它以某种方式隐藏起来。我在Mule doc网站的任何地方都找不到它,甚至在Dossot的书中也找不到。以下配置为我做了诀窍:

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" />

这篇关于骡子线程池大小上限的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆