Jmeter线程组时长
Jmeter thread group duration
我遇到这种情况:
- 线程组(n_threads=X,持续时间 Y 秒)
- 循环
- Java采样器
当测试持续时间结束时,Jmeter 不会停止发出请求的线程,因此测试不会终止。如何解决?
当您的“Java 采样器”的响应时间高于您的测试持续时间时,可能会发生这种情况。我建议在您的 Java 代码中引入合理的超时,这样采样器就会 fail/exit 而不是永远等待响应。如果您不知道那里发生了什么 - 采取 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
有关 JMeterGroovy 脚本概念的更多信息,请参见 Apache Groovy - Why and How You Should Use It
另请注意,此代码将终止整个 JVM,因此将 jmeter.save.saveservice.autoflush=true
行添加到 user.properties 可能是有意义的,以强制终止整个 JVM 可能会导致一些结果丢失。
我遇到这种情况:
- 线程组(n_threads=X,持续时间 Y 秒)
- 循环
- Java采样器
- 循环
当测试持续时间结束时,Jmeter 不会停止发出请求的线程,因此测试不会终止。如何解决?
当您的“Java 采样器”的响应时间高于您的测试持续时间时,可能会发生这种情况。我建议在您的 Java 代码中引入合理的超时,这样采样器就会 fail/exit 而不是永远等待响应。如果您不知道那里发生了什么 - 采取 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
有关 JMeterGroovy 脚本概念的更多信息,请参见 Apache Groovy - Why and How You Should Use It
另请注意,此代码将终止整个 JVM,因此将 jmeter.save.saveservice.autoflush=true
行添加到 user.properties 可能是有意义的,以强制终止整个 JVM 可能会导致一些结果丢失。