如何在JMeter单线程组中实现100用户的负载分配?
单线程组内实现100用户的负载分配方案
针对你需要的100用户负载分配逻辑,有两种简单可靠的实现方式,解决你之前If控制器失效的问题:
方法一:__threadNum()函数 + If控制器
这个方法利用每个线程(用户)的唯一编号来区分分支,步骤如下:
- 线程组配置:设置线程数=100,循环次数=1(确保每个用户只走一次完整流程)。
- 通用前置流程:在最上方添加「登录」和「首页」请求,所有100个线程都会依次执行这两个步骤。
- 购买鞋子分支:添加If控制器,在条件框中输入:
务必勾选控制器的「Interpret Condition as Variable Expression」选项(默认勾选,若之前没勾会导致条件不生效),然后把「购买鞋子」的请求放在这个控制器下——线程编号1-60的用户会执行此分支。${__threadNum} <= 60 - 余额查询分支:再添加一个If控制器,条件输入:
同样勾选变量解析选项,把「余额查询」请求放在这里——线程编号61-100的用户会执行此分支。${__threadNum} > 60 - 通用收尾流程:在两个If控制器之后添加「登出」请求,所有用户执行完各自分支后都会执行登出。
方法二:吞吐量控制器(更直观)
如果不想计算线程编号,用吞吐量控制器可以直接指定分支的执行次数:
- 线程组同样设置100线程、循环1次,前置的「登录」「首页」请求不变。
- 购买鞋子分支:添加吞吐量控制器,选择「Total Executions」模式,设置吞吐量=60,将「购买鞋子」请求放入其中——这个分支总共会被执行60次,对应60个用户。
- 余额查询分支:再添加一个吞吐量控制器,同样选「Total Executions」模式,设置吞吐量=40,放入「余额查询」请求——对应40个用户执行此分支。
- 最后添加「登出」请求,所有用户完成分支后统一执行登出。
你之前If控制器失效的常见原因
大概率是没勾选「Interpret Condition as Variable Expression」,导致JMeter把条件当成纯字符串判断,而非解析成表达式计算;或者条件中函数使用错误(比如漏写__前缀)。
内容的提问来源于stack exchange,提问作者Nikki Niha
相关产品推荐
相关产品推荐

