JMeter Ultimate Thread Group多Sampler API执行异常排查求助
JMeter Ultimate Thread Group 采样器执行异常定位结果
根本原因
你对JMeter线程组的执行逻辑理解错了:同一线程组下的Sampler默认按排列顺序串行执行,不会自动给每个Sampler分配独立线程并行运行。
两类异常的具体诱因
- 最后2个API完全未执行:
你当前线程组的错误处理规则选的是「采样器报错后终止线程」,前两个Sampler存在请求报错、断言失败、超时等问题,线程跑到前两个节点就直接被终止,根本不会走到后面两个Sampler的逻辑。去结果树里翻前两个接口的执行记录,必然能找到非200响应、断言不匹配、连接超时之类的错误记录。 - 已运行的2个API线程数不达标:
你配置的25个虚拟用户是分批次差异化启动的,第一批启动的5个线程跑完第一个Sampler后,还没等剩余20个线程全部启动完成,就因为第二个Sampler报错触发了线程终止;后续启动的线程也大多在第一个、第二个Sampler节点就报错终止,所以第二个Sampler仅能拿到第一批启动的5个线程的执行量,根本达不到25线程的预期规模。第一个Sampler作为每个线程启动后执行的第一个节点,所有启动成功的线程都会执行,因此能凑够25线程的执行量。
修复步骤
- 先单线程逐个调试4个Sampler:确认每个接口的请求地址、参数、请求头、鉴权信息配置正确,添加的响应断言能正常匹配返回结果,单接口连续跑10次无报错后再做多线程压测。
- 调整执行结构实现4个接口均达到25线程压测的效果:
- 优先选择该方案:给每个API单独创建独立的Ultimate Thread Group,每个线程组单独配置25用户的尖峰测试ramp-up、持续持有时间参数,各接口压测完全独立,不会因为单个接口报错影响其他接口执行
- 如果一定要把4个接口放在同一个线程组下,先把线程组配置里的「采样器报错后执行动作」改成
Continue,再给每个Sampler外层套独立的事务控制器,保证单个Sampler报错不会中断整个线程的后续流程
- 排查阶段可以在线程组下添加调试采样器、结果树监听器,开启错误日志记录,跑1轮测试就能定位所有导致线程中断的具体报错点。
内容的提问来源于stack exchange,提问作者Lipsa test
相关产品推荐
相关产品推荐

