JMeter GUI模式达到停止条件后执行不终止,少量线程无法停止
JMeter AutoStop Listener触发后测试无法自动停止成因分析
- 不可中断的IO操作阻塞:未正常终止的线程大多卡在无超时配置的底层IO调用中,例如HTTP请求未设置连接超时、响应超时,数据库查询未设置查询超时等。AutoStop Listener默认触发的是优雅停止逻辑,仅给线程发送停止标识,等待当前任务执行完成后退出,不会主动中断处于IO等待状态的线程。而手动点击GUI的「Stop」按钮时,JMeter会主动调用
thread.interrupt()方法中断阻塞中的IO,因此会出现Interrupting相关日志,强制线程退出。 - JMeter 5.2.1版本AutoStop Listener的已知缺陷:该版本的AutoStop Listener仅支持优雅停止逻辑,没有提供强制终止线程的配置项,即便检测到线程长时间未退出也不会主动触发中断操作,该问题在JMeter 5.4及后续版本已优化,新增了停止时强制中断阻塞线程的开关。
- 未配置测试兜底终止规则:你使用的Classic Thread Group仅配置了升压规则,未设置测试整体的最大运行时长兜底,即便升压周期结束,只要还有存活线程,JMeter测试进程就会一直等待,不会主动标记测试结束。
- 自定义脚本逻辑阻塞:如果测试脚本中包含JSR223、BeanShell等自定义代码,或者调用了第三方组件,逻辑中存在死锁、无限等待、无超时的同步操作,也会导致线程无法响应优雅停止信号,一直处于挂起状态。
内容的提问来源于stack exchange,提问作者JustNatural
相关产品推荐
相关产品推荐

