【发布时间】:2021-05-28 07:33:31
【问题描述】:
我有这种情况:
- 线程组(n_threads=X,持续时间 Y 秒)
- 循环
- Java 采样器
- 循环
当测试持续时间结束时,Jmeter 不会停止发出请求的线程,因此测试不会终止。怎么解决?
【问题讨论】:
我有这种情况:
当测试持续时间结束时,Jmeter 不会停止发出请求的线程,因此测试不会终止。怎么解决?
【问题讨论】:
当您的“Java Sampler”的响应时间高于您的测试持续时间时,可能会发生这种情况。我建议在您的 Java 代码中引入合理的超时,这样采样器就会失败/退出,而不是永远等待响应。如果您不知道那里发生了什么,请发送thread dump 并查看您的线程卡在哪里
作为解决方法,我能想到的“终止”测试的唯一方法是:
使用 1 个线程添加另一个线程组
使用以下代码添加JSR223 Sampler:
sleep(5000) // wait for 5 seconds, amend accordingly to your desired test duration
log.info('Exceeded test duration')
System.exit(1) // the process will exit with non-zero exit code (error), change it to 0 if needed
有关 JMeter 中 Groovy 脚本概念的更多信息,请参阅 Apache Groovy - Why and How You Should Use It
另外请注意,此代码将终止整个 JVM,因此将jmeter.save.saveservice.autoflush=true 行添加到 user.properties 可能是有意义的,因为强制终止整个 JVM 可能会导致一些结果丢失。
【讨论】: