如何从 JMeter 摘要中排除预热时间?

How to exclude warmup time from JMeter summary?

我有一个简单的 JMeter 吞吐量测试,它产生 20 个线程,每个线程对数据库执行一个简单的 SQL 查询。我设置了 10 秒的加速时间和 70 秒的总测试时间。

当我在非 GUI 模式下执行测试时,我看到以下摘要输出:

summary +      1 in   0.1s =    7.4/s Avg:   135 Min:   135 Max:   135 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0
summary + 137501 in  28.5s = 4831.0/s Avg:     3 Min:     1 Max:   614 Err:     0 (0.00%) Active: 20 Started: 20 Finished: 0
summary = 137502 in    29s = 4796.9/s Avg:     3 Min:     1 Max:   614 Err:     0 (0.00%)
summary + 171000 in    30s = 5703.8/s Avg:     3 Min:     1 Max:   519 Err:     0 (0.00%) Active: 20 Started: 20 Finished: 0
summary = 308502 in    59s = 5260.8/s Avg:     3 Min:     1 Max:   614 Err:     0 (0.00%)
summary +  61016 in  11.5s = 5309.0/s Avg:     3 Min:     1 Max:   518 Err:     0 (0.00%) Active: 0 Started: 20 Finished: 20
summary = 369518 in  70.1s = 5268.9/s Avg:     3 Min:     1 Max:   614 Err:     0 (0.00%)

如您所见,吞吐量在前 30 秒内较低,但随后会回升。我知道这可能是由于线程启动和其他系统组件预热所致。

有什么方法可以从最终计算中排除 "X" 秒的起始数字。我使用了一些自定义性能测试,我总是排除前 "X" 秒,直到系统在测量输出之前达到稳定状态。

无论如何我可以在 JMeter 中做到这一点吗?

可以使用jmeter插件生成图表

并填写开始偏移字段。

阅读此使用世代:

选项 1:

JMeter 结果文件基本上是具有以下格式的 CSV 文件:

timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,success,bytes,grpThreads,allThreads,Latency

1440671556283,1799,HTTP Request,200,OK,Thread Group 1-1,text,true,1591,1,1,1798

其中第一列是样本开始时间(自 Unix Time 以来的毫秒数)

如果您需要省略前 30 秒,请将 30000 添加到第一个采样器时间戳,找到最近的行并删除从第 1 行到第 1 行的所有行。

选项 2:

您可以使用 Synchronizing Timer 来确保负载从一开始就以 20 个线程开始。