1. 程式人生 > 其它 >jmeter效能測試部署(Linux)

jmeter效能測試部署(Linux)

1Linuxjmeter效能測試

1.1環境配置

1.1.1環境準備

整個測試過程中,測試環境為Windows系統和linux系統兩部分,Windows環境下除錯和配置需要執行的jmeter指令碼,在linux系統中開始效能測試過程。

Linux安裝CentOS 7系統,並在系統中安裝好java環境,此次測試中,配置的java為java1.8.0_211。

1.1.2測試軟體準備

測試中準備apache-jmeter-5.0版本jmeter進行測試。

為保證指令碼設定和指令碼執行時沒有差異,Windows和Linux環境使用同一個版本的jmeter,也避免測試過程中因測試工具版本不相容,出現異常。

1.2jmeter叢集配置

1.2.1單臺jmeter設定

jmeter包拷貝至linux指定位置並解壓(tar –zxvf 壓縮包名稱),開始配置jmeter。

1.配置環境變數

開啟/etc/profile,進入檔案最後新增jmeter環境配置,如下圖紅色橫線所示,路徑為Jmeter包存放位置。(可進入jmeter的bin目錄下,輸入pwd命令檢視對應位置)

配置完成後,儲存此配置檔案,執行命令source /etc/profile讓配置生效。此時在輸入命令:jmeter–v可檢視對應的jmeter版本資訊。

Jmeter要配環境變數,這樣不用手動起server,如果不配置環境變數,每次啟動時都需要進入到對應的bin目錄下進行操作。

2. Jmeter記憶體調優

壓測過程中jmeter報記憶體溢位(報錯:java.lang.OutOfMemoryError:gc overhead limit exceeded),或在測試過程中因jmeter自身記憶體限制,影響測試結果,在測試前可調整jmeter記憶體。

檢視bin目錄下jmeter檔案(此次使用的版本,記憶體設定在jmeter檔案中,也有在jmeter.sh/jmeter.bat檔案中),修改HEAP=-Xms512m -Xmx1024m對應數值。此處對應的引數意義為:

-Xms:初始值

-Xmx:最大值

-Xmn:最小值

Heap Size的設定不宜太小,也不宜太大。若設定太小程式的響應速度會變慢了,因為GC佔用了更多的時間,而應用分配到的執行時間較少。太大也會造成空間的浪費,而且也會影響其他程式的正常執行,Heap Size 最大最好不要超過可用實體記憶體的80%。建議將-Xms和-Xmx選項設定為相同。

根據實際情況,在此次過程中將此數值設定為4096m。

1.2.2Jmeter叢集配置

Jmeter 支援分散式壓測,將需要模擬的大量併發使用者數分發到多臺壓力機,使 Jmeter 擁有更大的負載量,滿足真實業務場景(高併發場景)。

Jmeter分散式配置主要分為master端修改和slave端修改。設定前請確認,master端和slave端要ping通。

先對slave端進行配置。

1.進入 jmeter.properties檔案,查詢並取消這段配置的註釋 server.rmi.ssl.disable=false ,false改成true。

2.進入jmeter-server檔案(也有版本在jmeter.properties檔案中),查詢jmeter-server -Djava.rmi.server.hostname=xx.xx.xx.xx設定slave節點IP(即當前slave機ip),這裡設定的IP也是啟動slave上的jmeter服務的IP,如果啟動時顯示的資訊與此不符,請確認是否是多網絡卡或設定虛擬IP的原因。

3. 當預設的1099埠被佔用或需要修改對應埠值時,進入 jmeter.properties檔案,查詢server.rmi.localport和server_port,並取消註釋,將值修改為1099,固定分散式啟動監聽埠。此次測試將埠都設定在了1099.

Slave端設定完成後,在master端新增已設定好的slave機IP和埠資訊。

進入master機的jmeter.properties檔案,查詢修改remote_hosts=ip:port:改成要啟動的Linux機的ip以及埠。

例如:

多個slave機之間,使用逗號分隔開。

設定完成後,可能會遇到打不開的許可權問題,此時:chmod 777 filename ,更改檔案許可權,然後再重新就可以打開了

1.2.3Jmeter叢集啟動

設定完slave機和master機,先在slave機啟動服務。

執行./jmeter-server -Djava.rmi.sever.hostname=IP(slave機IP)完成slave機啟動。如下,啟動10.30.20.71的Slave機,當出現以下提示資訊時,slave機正常啟動,等待master機的呼叫。

slave機啟動後,master機執行語句:./bin/jmeter.sh -n -t ./xxxx.jmx -R 10.30.20.71 -l ./result/result.jtl -e -o ./report 即可呼叫此slave機。

master機啟動slave機進行測試時,slave機下出現提示資訊:

master機出現資訊和執行資料:

指令碼執行完成時,master機同樣出現tydying up…指令碼執行完成,開始整理報告資料,出現…end of run報告整理完成。

在指令碼執行完成時,slave出現下列提示資訊:

Finishing the test on host 10.30.20.71 @ Mon Oct 19 18:26:23 CST 2020 (1603103183123)。

1.3Jmeter指令碼設定

此次設定,為滿足測試要求,使用Stepping Thread Group外掛進行設定。安裝好此外掛,並對此外掛進行設定,每一項設定引數含義如下:

This group will start 100 threads:設定執行緒組啟動的執行緒總數為100個;

First,wait for N seconds:啟動第一個執行緒之前,需要等待N秒;

Then start N threads:設定最開始時啟動N個執行緒;

Next,add 10 threads every 30 seconds,using ramp-up 5 seconds:每隔30秒,啟動10個執行緒,10個執行緒在5秒內啟動完成;

Then hold load for 60 seconds:啟動的執行緒總數達到最大值之後,再持續執行60秒;

Finally,stop 5 threads every 1 seconds:每秒停止5個執行緒;

此外掛按一般執行緒組一樣進行介面和控制器設定,開始指令碼除錯和設定,設定後調整上述引數即可開始測試。

1.4Jmeter測試

再執行指令碼之前,檢查檔案路徑,需要再jmeter下建立一個report和一個result路徑,以便在測試過程中指定測試結果和測試報告存放地址。每次進行測試時,這兩個路徑下應該為空,否則不能正常進行測試。

將設定好的指令碼,xxx.jmx檔案,傳到已配置的linux環境jmeter目錄下,執行命令語句。

Jmeter官網使用者手冊介紹如下:

-h, –help -> prints usage information and exit

-n, –nongui -> run JMeter in nongui mode

-t, –testfile <argument> -> the jmeter test(.jmx) file to run

-l, –logfile <argument> -> the file to log samples to

-r, –runremote -> Start remote servers (as defined in remote_hosts)

-H, –proxyHost <argument> -> Set a proxy server for JMeter to use

-P, –proxyPort <argument> -> Set proxy server port for JMeter to use

具體的含義如下:

-h 幫助 -> 打印出有用的資訊並退出;

-n 非 GUI 模式 -> 在非 GUI 模式下執行 Jmeter;

-t 測試檔案 -> 要執行的 JMeter 測試指令碼檔案;

-l 日誌檔案 -> 記錄結果的檔案;

-r 遠端執行 -> 在Jmter.properties檔案中指定的所有遠端伺服器;

-H 代理主機 -> 設定 JMeter 使用的代理主機;

-P 代理埠 -> 設定 JMeter 使用的代理主機的埠號;

根據實際情況選擇,執行語句時使用的命令。

1.5Jmeter報告檢視

當測試完成之後,自動生成報告,報告指定在report路徑下,測試結果儲存在result路徑下。此時將report整個打包tar–cvf report.rar report),打包完成之後將打包檔案傳到windows環境中進行檢視。