JMeter做壓測時,當需要多個jmx腳本依次執行時,需要用到“啟動延時”,即間隔可設置的時間后啟動運行下一個jmx腳本。
實現“啟動延時”的方法有2個。
方法一、利用JMeter線程組中的"Startup delay"參數
如上圖,調度器(Scheduler)中有2個參數,持續時間(Duration)和啟動延時(Startup delay),Duration用的比較多,可以限定測試的持續時間。
當jmx腳本不止1個時,如果需要所有jmx腳本都依次執行就需要用到Startup delay了。
Startup delay # 從當前時刻開始延遲多長時間開始運行
我們可以一次性的創建所有的測試腳本,每個測試腳本依據具體的測試需求設定不同的Startup delay時間,比如腳本0的Startup delay時間為0(直接啟動),
腳本1的Startup delay時間為1000,腳本1的Startup delay時間為2000(以此類推)。
由於要把腳本放到Linux環境中運行,可以寫一個shell腳本test.sh來做到“一鍵啟動”,還需要創建1個包含所有測試腳本的testdata文件夾,如下:
test.sh文件:
#!/bin/bash
#author:jia
# 使用 . 號來引用testdata下的所有jmx文件
. ./testdata/*
nohup jmter -n -t test_00.jmx > test_00.log 2>&1 &
nohup jmter -n -t test_01.jmx > test_01.log 2>&1 &
nohup jmter -n -t test_02.jmx > test_02.log 2>&1 &
nohup jmter -n -t test_03.jmx > test_03.log 2>&1 &
2>&1 的作用:將標准輸出、標准錯誤輸出合並后重定向到test_00.log。
nohup &的方式可以把test.sh放到后台運行,避免前台斷開連接打斷test.sh的運行。
方法二、利用shell的sleep命令
也就是直接在test.sh腳本中加入延時,test.sh變為:
nohup jmter -n -t test_00.jmx > test_00.log 2>&1 &
sleep 10m # 等待10分鍾后再執行下一個命令 nohup jmter -n -t test_01.jmx > test_01.log 2>&1 &
sleep 10m nohup jmter -n -t test_02.jmx > test_02.log 2>&1 &
sleep 10m nohup jmter -n -t test_03.jmx > test_03.log 2>&1 &