【问题标题】:Limiting HTTP Listener Active Threads to control number of concurrent mule flow instaces限制 HTTP 侦听器活动线程以控制并发 mule 流实例的数量
【发布时间】:2015-03-18 18:15:47
【问题描述】:

我正在尝试对如何限制并发传入 HTTP 请求的数量进行测试。 所以我尝试模拟以下场景。 我创建了一个简单的流程 1. Http Listener 作为 Msg 源 2. 使用 Groovy 脚本,休眠 15 秒引入延迟 3. 使用 Hello world 设置 Payload。

因此,任何单个请求的响应时间最短为 15 秒。然后为了限制活动线程的数量(即假设控制并发请求/处理线程),我将 maxActiveThreads 设置为 1。所以理想情况下,我会允许 1 个并发线程来处理流。

现在,当我使用 apache 基准测试触发时,就像使用 1 个请求进行简单获取一样,我收到的响应时间为 15 秒,这很好。现在,当我将并发请求数增加到 2 时,我仍然收到 15 seconds 的响应时间。我预计是 30 秒

在 9 个并发请求之前,我看到了这种行为。超过 9 个,然后从第 10 个请求开始,它被放置在等待队列中。

所以请专家解释一下如何将活动线程的数量限制为 1。以及如何将并发请求的数量设置为 9(我在使用 JConsole 的线程中看到有 9 个 SelectorRunner 线程,其中我假设有链接到它)。

下面是简单的流程。

<http:listener-config name="HTTP_Listener_Configuration" host="localhost" port="8082" doc:name="HTTP Listener Configuration">
<http:worker-threading-profile maxThreadsActive="1" />
</http:listener-config>
<flow name="getting-sartedFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP" />
<scripting:component doc:name="Groovy">
    <scripting:script engine="Groovy">
        <![CDATA[Thread.currentThread().sleep((long)(15000));]]>
    </scripting:script>
</scripting:component>
<set-payload value="Hello World" doc:name="Set Payload" />
</flow>

【问题讨论】:

  • 我已经尝试运行该应用程序并且手动测试它没有问题,我会在响应之间获得 15 秒。你能分享一下apache benchmark命令吗?此外,运行应用程序的骡子版本。谢谢。
  • 这里是 ab 命令,目标是 9 个并发线程,总共 9 个请求。 “ab -n 9 -c 9 127.0.0.1:8082”。在我的笔记本电脑上安装 Mule 3.6 社区独立服务器版。
  • 当我添加 Logger 作为第一步以 maxActiveThreads 为 1 和并发请求数为 2 时,下面是日志,如果您看到时间戳,它会记录在同时,理想情况下需要有 15 秒的延迟。 “错误 2015-03-17 11:16:05,821 [[getting-sarted].HTTP_Listener_Configuration.worker.01] 记录:您好我在这里错误 2015-03-17 11:16 :05,822 [[getting-sarted].http.listener(4) SelectorRunner] 记录:你好,我在这里”。
  • 谢谢,我现在可以自己测试并找到解决方案。

标签: mule mule-component


【解决方案1】:

正如forum 中的回答,您需要为worker-threading-profile 定义一个poolExhaustedAction。如果您不这样做,那么将使用默认的 RUN,它解释了您所看到的行为。据我了解,您应该使用 WAIT。

&lt;http:worker-threading-profile maxThreadsActive="1" poolExhaustedAction="WAIT"/&gt;

【讨论】:

  • 谢谢。有效。但是为了其他用户的利益,在 Anypoint Studio for Http Listener Config 向导中,您会发现“WAIT”作为默认的 Pool Exhausted Action,这是错误的。根据文档,默认值为“RUN”。
  • 我提出了这个问题,它正在修复中。感谢您提出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-07
  • 1970-01-01
相关资源
最近更新 更多