【发布时间】: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