我正在尝试测试如何限制并发传入HTTP请求的数量。 所以我试着模拟以下场景。 我创建了一个简单的流程 1. Http Listener作为Msg源 2.使用Groovy Script,睡眠15秒以引入延迟 3.使用Hello world设置Payload。
因此,任何一个请求都有15秒的响应时间。然后,为了限制活动线程的数量(即假设控制并发请求/处理线程),我已将maxActiveThreads设置为1.因此,理想情况下,我将允许1个并发线程处理流。
现在,当我使用apache基准测试时,简单地获取1个请求,我收到响应时间为15秒,这很好。现在当我将并发请求数增加到2时,我仍然收到15秒的响应时间。我期待它是30秒
我看到了9个并发请求之前的行为。超过9,然后从第10个请求开始,它被置于等待队列中。
请专家解释如何将活动线程的数量限制为1.如何将并发请求的数量设置为9(我在使用JConsole
的线程中看到有9个{{1} }线程,我认为它与它有关联)。
以下是简单的流程。
SelectorRunner
答案 0 :(得分:2)
正如forum中所述,您需要为poolExhaustedAction
定义worker-threading-profile
。如果你没有,那么将使用默认的RUN,这解释了你所看到的行为。根据我的理解,你应该使用WAIT。
<http:worker-threading-profile maxThreadsActive="1" poolExhaustedAction="WAIT"/>