JMeter - 避免线程突然关闭
JMeter - Avoid threads abrupt shutdown
我有一个包含多个事务控制器(我称之为 UserJourneys)的测试计划,每个控制器都由一些采样器(JourneySteps)组成。
我面临的问题是,一旦测试持续时间结束,Jmeter 就会终止所有线程,并且不会考虑它们是否处于 UserJourney(事务控制器)的中间。
在其中一些 UJ 上,我做了一些重要的事情,需要在用户再次登录之前完成,否则下一次迭代(新测试 运行)将失败。
问题是:有没有办法告诉 JMeter 它需要等待每个线程都达到其 flow/UJ/TransactionController 的末尾才能杀死它?
提前致谢!
从 5.1.1 版开始,这是不可能的,您应该在以下位置请求增强:
解决方案是添加为包含 JSR223 预处理器的 Thread Group a Flow Control Action 的第一个子节点:
JSR223 PreProcessor 将包含此 groovy 代码:
import org.apache.jorphan.util.JMeterStopTestException;
long startDate = vars["TESTSTART.MS"].toLong();
long now = System.currentTimeMillis();
String testDuration = Parameters;
if ((now - startDate) >= testDuration.toLong()) {
log.info("Test duration "+testDuration+" reached");
throw new JMeterStopTestException("Test duration "+testDuration+"reached ");
} else {
log.info("Test duration "+testDuration+" not reached yet");
}
并像这样配置:
最后,您可以在命令行上以毫秒为单位设置 属性 testDuration:
-JtestDuration=3600000
如果您想了解有关 JMeter 和性能测试的更多信息,book 可以帮助您。
我有一个包含多个事务控制器(我称之为 UserJourneys)的测试计划,每个控制器都由一些采样器(JourneySteps)组成。
我面临的问题是,一旦测试持续时间结束,Jmeter 就会终止所有线程,并且不会考虑它们是否处于 UserJourney(事务控制器)的中间。
在其中一些 UJ 上,我做了一些重要的事情,需要在用户再次登录之前完成,否则下一次迭代(新测试 运行)将失败。
问题是:有没有办法告诉 JMeter 它需要等待每个线程都达到其 flow/UJ/TransactionController 的末尾才能杀死它?
提前致谢!
从 5.1.1 版开始,这是不可能的,您应该在以下位置请求增强:
解决方案是添加为包含 JSR223 预处理器的 Thread Group a Flow Control Action 的第一个子节点:
JSR223 PreProcessor 将包含此 groovy 代码:
import org.apache.jorphan.util.JMeterStopTestException;
long startDate = vars["TESTSTART.MS"].toLong();
long now = System.currentTimeMillis();
String testDuration = Parameters;
if ((now - startDate) >= testDuration.toLong()) {
log.info("Test duration "+testDuration+" reached");
throw new JMeterStopTestException("Test duration "+testDuration+"reached ");
} else {
log.info("Test duration "+testDuration+" not reached yet");
}
并像这样配置:
最后,您可以在命令行上以毫秒为单位设置 属性 testDuration:
-JtestDuration=3600000
如果您想了解有关 JMeter 和性能测试的更多信息,book 可以帮助您。