我正在努力解决如何影响(向上)Mule中VM传输使用的线程数。我读过Tuning& Mule文档中的性能页面,但有些东西没有点击我。
我有一个流程执行JDBC调用,然后使用foreach将结果集推送到VM队列中。
<foreach>
<vm:outbound-endpoint exchange-pattern="one-way" path="checkService"/>
</foreach>
这是由另一个流程进行处理,包括进行HTTPS调用并检查返回值。
<flow name="ExecuteTests" doc:name="ExecuteTests">
<vm:inbound-endpoint exchange-pattern="one-way" path="checkService"/>
<https:outbound-endpoint exchange-pattern="request-response"...
...etc.
</flow>
其中一些电话很快,但有些电话需要5秒钟。我想要的是ExecuteTests流程使用更多线程来进行处理,但我只在日志中看到线程02-05。我本来希望看到出口HTTPS连接器的调度程序线程池附近使用的线程数...我认为默认为16。
我尝试了以下内容:
<vm:connector name="vmConnector">
<receiver-threading-profile maxThreadsActive="100" maxThreadsIdle="100"/>
</vm:connector>
<flow name="ExecuteTests" doc:name="ExecuteTests">
<vm:inbound-endpoint exchange-pattern="one-way" path="checkService" connector-ref="vmConnector"/>
...etc.
但没有区别。
认为可能是入站端点的缓冲区弄乱了东西,我试过了:
<vm:connector name="vmConnector">
<receiver-threading-profile maxThreadsActive="100" maxThreadsIdle="100"/>
<vm:queue-profile maxOutstandingMessages="1"/>
</vm:connector>
但它也没有帮助。
我错过了什么?
答案 0 :(得分:2)
从您的流程中可以看出问题不在于线程。(我相信)。
通常,VM接收器线程很快,并且它们会根据进入的请求数量进行扩展。 在“ExecuteTests”流中,似乎有一个出站HTTP调用。因此,HTTP调用可能是导致延迟的原因。
但是如果你想增加线程,请尝试为HTTP连接器添加调度程序线程配置文件。
另外,为了增加流处理的线程数,请使用Flow线程配置文件。
像
<asynchronous-processing-strategy name="executeTestsStrategy" maxThreads="40" minThreads="20" />
<flow name="ExecuteTests" doc:name="ExecuteTests" processingStrategy="executeTestsStrategy">
<vm:inbound-endpoint exchange-pattern="one-way" path="checkService"/>
<https:outbound-endpoint exchange-pattern="request-response"...
...etc.
</flow>
希望这有帮助。