JMeter采样数达到线程数后停止发送新请求如何修复
JMeter 采样数达到线程数后停止发送请求修复方案
问题场景前提
你当前使用的配置为:100线程、无限循环、30分钟持续运行、200秒ramp-up周期,JMeter版本5.2.1,运行环境为macOS Big Sur 11.6,可按照以下步骤逐一排查修复:
排查修复步骤
- 第一步:确认线程组循环配置正确性
检查线程组页面的「循环次数」是否已勾选「永远」选项,部分用户会误将循环次数设为1,仅开启调度器的持续时间,这种配置下每个线程只会执行1次请求逻辑就会停止,不会触发循环。 - 第二步:排查控制器/采样器执行限制
若脚本中使用了「仅一次控制器」、条件判断不成立的「如果控制器」,或者单个采样器配置了单次执行标记,会导致线程跑完一轮逻辑后无后续请求可执行,直接进入空闲状态。可临时移除特殊控制器,仅保留单个HTTP采样器测试验证。 - 第三步:修复HTTP连接池阻塞问题
JMeter 5.2.1存在HTTP连接池回收的已知bug,若开启了连接复用,连接占满后会导致线程阻塞无法发起新请求。可在HTTP请求的「高级」设置页勾选每次迭代重置HTTP状态,或者临时禁用连接复用,确认问题是否解决。 - 第四步:避免调度器配置冲突
确认线程组调度器仅填写了「持续时间(秒)」为1800(对应30分钟),不要同时填写「结束时间」「启动延迟」参数,不同参数的优先级冲突可能会导致JMeter提前终止测试。 - 第五步:修复版本缺陷
5.2.1版本存在多个线程调度相关的已知问题,可直接升级到JMeter 5.4.3及以上稳定版本,无需修改脚本即可解决大部分原生调度bug。 - 第六步:排查自定义脚本阻塞
若脚本中包含BeanShell/Groovy后置处理器、断言等自定义逻辑,可能因为代码阻塞、耗时过长导致线程无法进入下一轮循环。可添加Debug Sampler结合查看结果树,定位线程卡住的具体节点。
验证修复效果时,可先将线程数调整为10、ramp-up改为10秒、持续时间改为300秒,缩小测试范围快速确认配置是否生效。
内容的提问来源于stack exchange,提问作者Polina Chentsova
相关产品推荐
相关产品推荐

