我在Jmeter中创建了一个用于负载测试的测试计划。现在它经常像整夜一样运行。当我早上看到结果时,其中一些 http 请求将失败,但我无法从生产日志中获取原因。由于我的服务器在 Tomcat 上运行,我怀疑生成了太多线程并处于等待状态或死锁状态。所以我需要在样本失败时进行线程转储。
基本上我的问题是,当 http 示例中出现故障时,有没有办法调用要从 Jmeter 调用的外部 Batch/Java 程序?
> JMeter 有一个内置变量,其中包含先前采样器执行的结果:${JMeterThread.last_sample_ok}
,如果前面的采样器成功,则返回true
,在其他情况下返回false
。
因此,如果您按如下方式构建测试计划:
- HTTP请求
- 如果是控制器,条件:
${JMeterThread.last_sample_ok}==false
- 操作系统进程采样器,配置为启动批处理文件或 Java 程序
操作系统进程采样器将在"HTTP 请求"失败时执行。
引用:
- 如何使用JMeter的"IF"控制器并获得Pie
- 操作系统进程采样器官方文档