JMeter吞吐量控制器:如何按比例随机执行而非顺序执行?
解决JMeter Throughput Controller顺序执行导致的负载集中问题
问题根源
默认情况下,Throughput Controller使用Total Executions模式,JMeter会优先完成第一个控制器的预设执行配额,再依次处理后续控制器,这就导致所有请求先集中到第一个后端事务,引发负载不均。
解决方案:按比例随机分配执行
通过调整控制器组合与配置,实现请求按设定比例随机分发到不同事务:
1. 修改Throughput Controller的执行模式
将每个Throughput Controller的模式切换为 Percent of Threads (Shared):
- 进入单个Throughput Controller的配置界面
- 在「Throughput Calculation」下拉框中选择「Percent of Threads (Shared)」
- 保留原有的百分比设置(比如第一个设20、第二个设15等)
2. 用Random Controller包裹所有Throughput Controller
在测试计划中添加一个Random Controller,将所有10个Throughput Controller移入其中:
- Random Controller会让每个线程随机选择一个子控制器(即某个Throughput Controller)执行
- 结合「Percent of Threads (Shared)」模式,请求会按照设定比例随机分配到各个后端事务,彻底避免负载集中在首个控制器的问题
补充说明
- 若要求每个线程仅执行一个事务,需确保所有Throughput Controller的百分比总和为100%
- 若允许线程执行多个事务,可根据需求调整百分比总和,同时保留Random Controller的随机逻辑
内容的提问来源于stack exchange,提问作者EBDS
相关产品推荐
相关产品推荐

