JMeter非GUI模式24小时Soak Test运行12小时后闲置问题排查
JMeter 24小时稳定性测试闲置停滞问题排查
我已配置JMeter以非GUI模式运行24小时的稳定性测试(Soak Test),参数设置为:rampup=0、循环次数=1、并发用户数=10。但测试运行12小时后,JMeter陷入闲置状态长达11小时,直到第23小时我在命令行按下回车键才恢复运行。期间系统CPU使用率为0,无任何操作。此前相同配置的测试未出现该问题,现求助排查:
- 可能的故障原因
- 日志检查位置及日志解读方法
附:闲置时命令行截图显示界面停滞,无任何输出更新
一、可能的故障原因
- 控制台输入阻塞:Windows命令提示符或Linux终端在长时间无输出时,可能触发系统级的输入挂起机制,进程陷入等待输入的状态,按下回车相当于唤醒了阻塞的进程。
- 线程挂起/死锁:尽管循环次数设为1,但如果测试请求存在未处理的异步回调、连接池死锁,或依赖的外部服务无响应且未设置超时,可能导致线程挂起,表现为进程闲置。
- 系统电源管理干扰:系统电源计划(如硬盘待机、进程休眠)可能在长时间无磁盘IO时挂起JMeter进程,尤其是笔记本电脑或启用了节能模式的服务器。
- JMeter或JVM潜在问题:特定版本JMeter的非GUI模式存在bug,或JVM的垃圾回收机制异常(虽CPU闲置,但需排查是否有Full GC停顿)。
- 第三方插件冲突:若测试计划使用了第三方插件,插件的线程逻辑可能存在内存泄漏或死锁,长时间运行后触发挂起。
二、日志检查位置及解读方法
日志文件位置
- 默认日志文件
jmeter.log位于JMeter安装目录的bin文件夹下。 - 若启动时通过
-j /自定义路径/日志文件名.log指定了日志路径,需到对应路径查找。
日志解读要点
- 重点搜索关键词:
- 挂起前后的
ERROR、WARN日志,排查是否有连接超时、线程异常、资源耗尽的提示。 - 搜索
Thread started、Thread finished,确认10个用户线程是否正常启动/结束,是否有线程卡在某个执行步骤。 - 若启用了JVM GC日志,查找
GC相关记录,确认是否存在长时间GC停顿导致的假死。
- 挂起前后的
- 时间线定位:对比日志最后一条输出的时间与闲置开始时间,定位挂起发生的节点,查看该节点前后的日志,判断是请求执行阶段还是线程收尾阶段出现问题。
- 调试日志辅助:若需要更详细的线程执行信息,可在启动JMeter时添加
-LDEBUG参数开启调试日志,查看每个Sampler或处理器的执行细节,定位卡顿点。
内容的提问来源于stack exchange,提问作者CGA
相关产品推荐
相关产品推荐

