Jmeter分佈式測試
單臺機器運行500個線程就基本到極限了,所以很多時候我們需要用到分佈式執行方式。
1. 介紹
Jmeter的分佈式執行方式,分爲一臺調度機和多臺執行機。其中調度機保存測試腳本,遠程啓動時分發給所有執行機。而執行機執行的過程中會把請求結果實時傳回給調度機。以達到分佈式測試的目的。
以下圖例中,以a機器作爲調度機,a、b、c機器作爲執行機進行測試。(機器緊張的情況下,a也可以充當執行機)
PS: 傳輸過程中會產生一定的損耗,所以不建議調度機參與執行。
2. 準備工作
2.1 執行機準備工作
- 查詢本機ip地址
windows在cmd執行ipconfig。Linux在終端執行ifconfig可以查到本機的ip地址。
PS: 因爲我這是A類地址,所以是10開頭的,一般是C類地址192.168.x.x。
2.2 調度機準備工作
- 進入調度機上Jmeter程序路徑,打開/bin/jmeter.properties 文件。
- 找到remote_hosts這一行,填入所有執行機ip地址。(來自2.1 執行機準備工作)
3. 執行方法
- 在每一臺執行機上,進入Jmeter程序路徑,啓動\bin\jmeter-server.bat 文件。
- 啓動後是這樣子的,這個終端不能關閉。紅框中會顯示本機IP地址。端口號在Jmeter4.0後是自動分配的。
- 在調度機上,運行Jmeter GUI界面。可以在運行-遠程啓動菜單看到配置文件中設定的執行機列表。
- 我點了運行-遠程全部啓動,2個執行機各執行了一遍。
執行過程中,調度機分發了.jmx腳本給了2臺執行機,2臺執行機執行過程中把執行結果傳回給了調度機。
- 如果遠程執行成功的話,執行機上的jmeter-server.bat執行框會有內容更新
4. 命令行進行遠程啓動
-
普通的命令行啓動是這樣的
jmeter.bat -n -t 線程組.jmx -l test.jtl -
帶上生成報告是這樣的
jmeter.bat -n -t 線程組.jmx -l test.jtl -e -o Report -
遠程啓動所有執行機,只需要加個 -r 參數即可
jmeter.bat -n -t 線程組.jmx -r -l test.jtl
-
執行完成後報告也是所有執行機的全部測試結果
5. 可能遇到的問題
5.1 java.io.FileNotFoundException: rmi_keystore.jks
- Windows上如果運行 jmeter-server.bat 遇到以下錯誤 java.io.FileNotFoundException: rmi_keystore.jks
- 進入調度機上Jmeter程序路徑,打開\bin\jmeter.properties 文件。
找到#server.rmi.ssl.disable=false 這一行,改成true,記得把#去掉。
- 調度機也需要修改爲#server.rmi.ssl.disable=true,否則遠程啓動時會報相同錯誤。