CentOS使用JMeter壓力測試


1、安裝java8:

通過網址下載:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

 

我下載的是RMP安裝包。

 

 

 下載后改名:

 

 

 安裝:

 

 

 配置環境變量:

 

 

 在內容末尾加上:

JAVA_HOME=/usr/java/latest
CLASSPATH=%JAVA_HOME%/lib:%JAVA_HOME%/jre/lib
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export PATH CLASSPATH JAVA_HOME

 

編輯好后,使環境變量生效:

source /etc/profile

 

 

 以上路徑可以在以下檢查安裝軟件的位置可以查到:

 

 2、使用jemter

去下載:https://jmeter.apache.org/download_jmeter.cgi

下載:

wget https://mirrors.bfsu.edu.cn/apache//jmeter/binaries/apache-jmeter-5.3.tgz

 

解壓:

tar -xvf apache-jmeter-5.3.tgz

 

 

用cli模式運行並加載測試模板,最后生成html報告:

 cd apache-jmeter-5.3.tgz && bin/jmeter -n -t Test\ Plan.jmx -l result.jtl -e -o ./html

 參數:

# -n:以非GUI形式運行Jmeter 
# -t:運行JMX測試計划腳本文件的路徑 
# -l:運行結果保存路徑(.jtl),此文件必須不存在
# -j: jmeter運行日志
# -r: 運行分布式壓測服務器,指明用jmeter屬性"remote_hosts"
# -R:運行分布式服務器,其后跟着服務器列表 # -e:在腳本運行結束后生成html報告,此參數要與-l一起使用。 # -o:用於存放html報告的目錄,此目錄必須為空。此參數與-e一起使用。

測試模板請在本機window下運行jmeter GUI來生成,保存后再上傳到測試服務器上。

------------恢復內容開始------------

1、安裝java8:

通過網址下載:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

 

我下載的是RMP安裝包。

 

 

 下載后改名:

 

 

 安裝:

 

 

 配置環境變量:

 

 

 在內容末尾加上:

JAVA_HOME=/usr/java/latest
CLASSPATH=%JAVA_HOME%/lib:%JAVA_HOME%/jre/lib
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export PATH CLASSPATH JAVA_HOME

 

編輯好后,使環境變量生效:

source /etc/profile

 

 

 以上路徑可以在以下檢查安裝軟件的位置可以查到:

 

 2、使用jemter

去下載:https://jmeter.apache.org/download_jmeter.cgi

下載:

wget https://mirrors.bfsu.edu.cn/apache//jmeter/binaries/apache-jmeter-5.3.tgz

 

解壓:

tar -xvf apache-jmeter-5.3.tgz

 

 

用cli模式運行並加載測試模板,最后生成html報告:

 cd apache-jmeter-5.3.tgz && bin/jmeter -n -t Test\ Plan.jmx -l result.jtl -e -o ./html

 參數:

# -n:以非GUI形式運行Jmeter 
# -t:運行JMX測試計划腳本文件的路徑 
# -l:運行結果保存路徑(.jtl),此文件必須不存在
# -j: jmeter運行日志
# -r: 運行分布式壓測服務器,指明用jmeter屬性"remote_hosts"
# -R:運行分布式服務器,其后跟着服務器列表 # -e:在腳本運行結束后生成html報告,此參數要與-l一起使用。 # -o:用於存放html報告的目錄,此目錄必須為空。此參數與-e一起使用。

測試模板請在本機window下運行jmeter GUI來生成,保存后再上傳到測試服務器上。
而實際測試建議使用CLI模式下運行。


3、壓測中的線程屬性說明

 

線程數:指測試時要發起壓測的線程數量,相當於模擬訪問用戶數。如果是分布式壓力測試,則每台壓測服務器都會按這個數量產生線程,而不是整個測試的總線程數。

Ramp-Up時間:所有線程創建完成所需的時間,以上方30秒設置為例,則30秒時間產生10000個線程,每秒則產生10000/30 = 約 999 條線程;

循環次數:每個線程循環執行的次數,勾選“永遠”則表示不限次數地循環執行,一直到下方的“持續時間”結束為止,如果所有線程循環完預定的次數,則當前測試就會停止了,就算下方的“持續時間”到了實際測試也已經是完成了。

持續時間(秒):當勾選“調度器”時,表示整個測試要持續執行的時間。實際測試時並非完全遵循此時間結束,如果上方的“循環次數”設置一個數值時,就算已經在測試時已經過了設定的持續時間,如果線程未循環完預定的循環次數,仍然會循環執行完為止。

啟動延遲(秒):測試開始時需延遲多少秒才開始。

“same user on each iteration":表示每次循環是否使用同一用戶(即同一線程)執行,這對於web測試是否需要保持同一會話時有用;

”延遲創建線程直到需要“:如選項如果勾選,則在Ramp-Up時間結束后等所有線程都啟動完畢才開始執行測試,如果Ramp-Up時間未結束時,已創建的線程則在等待狀態,並未開始執行測試。實際測試中,此選項幾乎不會影響測試結果 。

 

4、分布式測試

由於單台壓測服務器並不足以進行創建過多線程時,則可以使用分布式測試。將所有測試線程都由各台壓測服務器同時產生,並將測試結果返回到控制服務器。控制服務器與壓測服務器可以是同一台服器。

要求:

1、壓測服務器、控制服務器、被測試服務器要在同一內網;

2、壓測服務器、控制服務器安裝的java版本一致;

3、壓測服務器、控制服務器運行的jmeter版本一致;

 

壓測服務器、控制服務器的jmeter的SSL設置:

所有壓測服務器與控制服務器的通訊,默認以ssl證書通訊。

可以在控制服務器中使用./create-rmi-keystore.sh 命令(jmeter軟件中附帶)產生.jks后綴名的證書,將此證書存放到各壓測服務器的jmeter軟件的bin目錄下。

個人不太建議使用SSL證書通訊方式,本人實際測試時,在1099端口開放並未占用的正常情況下,壓測服務器並未收到控制服務器的測試指令的問題,用telnet測試卻是端口並無問題。。

所以個人建議在jmeter.properties配置文件中,關閉SSL選項:

server.rmi.ssl.disable=true

注意,每台壓測服務器和控制服務器都要修改此選項。這樣就不需要SSL證書了。

 

在每台壓測服務器上運行壓測服務:

./jmeter-server -Djava.rmi.server.hostname=內網IP

示例:

 

在控制服務器上,設置壓測服務器IP。打開jmeter.properties文件,修改remote_hosts配置值:

 

 多台壓測服務器之間用逗號相隔。1099是默認通訊端口,可省略寫入。如果壓測服務器的偵測端口已修改,則必須寫上端口。

 

測試端口是否被占用:

netstat -tunlp |grep 1099

 

 一切准備就緒。在控制器啟動測試:

./jmeter -n -t ./Test_Plan.jmx -r -l ./result.jtl -e -o ./html

Test_Plan.jmx是測試計划文件, result.jtl是測試結果文件。

 

 

一些問題總結:

(1)如果遇到 open too many files,說明遇到打開文件最大值問題。可進行如下設置:

echo "ulimit -HSn 65536" >> /etc/rc.local

echo "ulimit -HSn 65536" >> /root/.bash_profile

ulimit -HSn 65536

(2)如果遇到out of memory異常,則增大JVM內存池。編輯jmeter文件,找到:

 

增加內存池大小,如:

 

(3) 如果測試過程中需要停止測試,正常情況下可以使用./stoptest.sh(window: stoptest.cmd)停止。如果某些異常導致無法正常停止,則直接kill掉測試進程。

 

其他:

檢查TCP/IP連接狀態和對應個數:

netstat -an | awk '/^tcp/ {++s[$NF]} END {for(a in s) print a, s[a]}'

 

 

參考:

https://blog.csdn.net/qq_41907450/article/details/84143601

https://blog.csdn.net/chenlin465373800/article/details/78924780

 


免責聲明!

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



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