Jmeter(五十一) - 從入門到精通高級篇 - jmeter之運動戰(詳解教程)


1.簡介

運動戰是一種軍事作戰方式,依托較大的作戰空間來換取時間移動兵力包圍敵方,以優勢兵力速戰速決,運動戰的運用歸為這樣一段話“避敵主力,誘敵深入,集中優勢兵力逐個擊破”。今天宏哥也當一回將軍,指揮jmeter在運動中消滅敵人。好了閑話少說,回歸正題,今天主要是講解和分享:在jmeter運行中來更改jmeter的負載。

2.運行中來更改jmeter的負載

從文字中,我們很容易看出意思就是在jmeter測試運行腳本過程中,但是在不停止運行腳本的情況下修改jmeter的負載壓力,來達到我們預期的測試效果。大致步驟就是:宏哥將通過Constant Throughput Time(吞吐量計時器)、一個函數和BeanShell服務器組合完成jmeter的運動戰。具體步驟如下:

2.1建立測試腳本

1、建立測試計划,添加線程組,為了后邊容易觀察負載變化,宏哥將線程組設置成永遠。如下圖所示:

2、添加取樣器,取樣器設置如下圖所示:

3、添加Constant Throughput Time(吞吐量計時器),切記這個計數器是在度娘的下邊。設置(用到的函數就是__P)如下如圖所示:

4、最后分別添加監視器:View Results Tree、Graph Results和jp@gc - Bytes Throughput Over Time。如下圖所示:

2.2BeanShell服務器

使用JMeter Beanshell作為服務器,以便發出Beanshell命令。我們通過調用beanshell函數來更新先前定義的“hits”參數。Beanshell是一個內置於JMeter中的Java源代碼解釋器。

1、在jmeter.properties上取消注釋以下行(大約在908左右)你也可以打開文件Ctrl+F快速查找BeanShell定位到,如下圖所示:

2、重啟jmeter,docs命令窗口輸入:Netstat -an | find “9000” 命令查看端口運行狀態,如下圖所示:

同時在jmeter的啟動頁面也可以看到啟動的端口,如下圖所示:

3、在JMeter主目錄下創建文件夾bsh,並添加一個名為update_parameter.bsh的.bsh文件,其中包含以下內容:setprop("hits",args[0]);  如下圖所示:

4、在jmeter的home目錄下輸入cmd命令,進入到docs命令窗口,如下圖所示:

 5、執行 dir bash\   如下圖所示:

6、文件調用setprop函數以通過第一個參數(args [0])中的值更新“hits”現在能夠在測試運行時調用創建的.bsh來更新“hits”。在jmeter的home目錄下通過以下命令將參數更新為每分鍾“1200”個請求:

java -jar .\lib\bshclient.jar localhost 9000 .\bsh\update_parameter.bsh 1200

7、因為宏哥開始是1200,現在宏哥更新成120,如下圖所示:

8、運行一段時間后,宏哥再從120更新成1200,如下圖所示:

9、觀察運行中的吞吐量,有明顯的改變,是不是呈現出一個U字形(馬蹄形)啊,因為剛開始宏哥設置的吞吐是1200運行一段時間后,通過命令動態修改成120,然后再運行一段時間后,通過命令動態修改成1200,所以才成如圖U型。如果修改成120,立刻在修改成1200就會成V字形哦。如下圖所示:

3.小結

 小伙伴們可能按照宏哥的步驟做完后,沒有看到宏哥的效果,其實宏哥第一次運行也沒有看到。排查了一圈沒有問題啊,到底是哪里出問題了,沒有達到預期的效果。然后宏哥將線程組里用戶修改成10以后,出現了預期的效果,宏哥猜測可能是由於一個用戶,吞吐量120已經夠用了,所以從1200變成120,再變成1200基本是一條直線,沒有什么變化。知道內在原理或者宏哥說的不對的,可以告訴宏哥或者指出來,宏哥及時糾正。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM