背景:
性能测试过程中,有时候我们需要脚本按照给定的tps进行执行,在loadrunner中我们可以在执行器中设置pacing,例如我们的一次请求响应时间在0.1-0.2秒之间随机,我们想控制TPS为2,如果仅采用一个线程的话,他的TPS肯定是1/(0.1~0.2)≈5-10,要想满足TPS为2,那么需要响应时间固定为0.5秒。目前jmeter中通过固定定时器来控制的话,他是每次请求前休眠指定时间,暂时不能实现loadrunner中的自动计算的功能。
前提:
- IDEA环境用于编辑jmeter源码
- 下载完成jmeter源码(我使用的是5.3)
开始实现
修改这个类中的delay方法,修改如下:
@Override
public long delay() {
long currentTimeMillis = System.currentTimeMillis();
Long startTime = this.perThreadStartTime.get();
if (startTime == 0L) {
startTime = JMeterContextService.getContext().getThread().getStartTime();
}
long rsptime = currentTimeMillis - startTime;
if (rsptime < this.delay) {
this.perThreadStartTime.set(startTime + this.delay);
return this.delay - rsptime;
} else {
this.perThreadStartTime.set(currentTimeMillis);
return 0L;
}
}