鄭永剛
摘要:本文選用Jmeter測試工具,對基于Socket通信協(xié)議的系統(tǒng)進行性能測試。主要針對測試腳本編寫的流程和注意事項進行說明,對分布式部署的流程進行整理,并對分布式測試過程中的注意事項進行總結(jié)??梢院芎玫刂笇?dǎo)初次使用用戶進行測試工作。
關(guān)鍵詞:Jmeter測試;分布式部署;Socket通信協(xié)議
中圖分類號:TP393.04 文獻標(biāo)識碼:A 文章編號:1007-9416(2020)08-0051-03
本文以8000用戶同時向物聯(lián)網(wǎng)平臺上傳燃氣表數(shù)據(jù)為例,對基于Socket通信協(xié)議的系統(tǒng)性能測試進行案例解析。在8000用戶中,4000用戶上告正常數(shù)據(jù),4000用戶上告異常數(shù)據(jù),數(shù)據(jù)同時上傳時,監(jiān)控服務(wù)器資源性能指標(biāo)。
本例選用Jmeter進行分布式部署對系統(tǒng)性能進行測試。Jmeter是一款完全免費的開源軟件,提供了方便的圖形界面來編輯和開發(fā)測試腳本,支持http、jdbc、ldap、soap、jms、ftp、Socket 等協(xié)議,通過線程組,能夠輕易的設(shè)置不同測試的并發(fā)用戶,可以輕易在Windows、Linux和Mac上運行,進行功能、性能和分布式測試。
1 單機腳本的調(diào)試
Jmeter不但可以測試HTTP/HTTPS的請求,還可以測試Socket協(xié)議的請求。對于HTTP/HTTPS的請求,可以通過Badboy或者Jmeter錄制,對于Socket協(xié)議的請求需要通過Jmeter錄制或手動編寫的方法完成腳本。本文使用的測試機為Win7系統(tǒng),Jmeter 5.0,JDK 1.8,錄制詳細部署環(huán)境如下:
(1)修改Jmeter的配置文件。
文件位置:D:\Jmeter\apache-jmeter-5.0\bin\ jmeter.properties[1]
修改TCP Sampler,如圖1即可。
(2)在Jmeter中新建TCP采樣器,如圖2所示。
(3)配置取樣器參數(shù),如圖3所示。
名稱:隨便寫;
TCPClient classname:處理二進制,和配置文件一致,BinaryTCPClientImpl;
服務(wù)器名稱或IP:要測試的ip地址;
端口號:服務(wù)器,要測試系統(tǒng)的端口;
End of Line:結(jié)束符,文本最后兩位十六進制數(shù)轉(zhuǎn)成十進制之后的數(shù)值,即結(jié)束碼的二進制數(shù)據(jù),例如字串結(jié)束符是16時,此處填寫22;
要發(fā)送的文本:直接復(fù)制要發(fā)送的二進制數(shù)。
(4)運行Jmeter,完成Socket測試。
2 分布式部署
當(dāng)Jmeter處理高并發(fā),一臺機器調(diào)用JVM不夠測試時,可以使用分布式的形式來進行分壓,分布式簡單的說就是由一臺控制機去啟動Jmeter配置相關(guān)參數(shù)后,通過JAVA的RMI(Remote Method Invocation)遠程到其他機器(執(zhí)行機)進行負載。分布式部署步驟如下:
(1)控制機和執(zhí)行機的Jmeter和JDK版本盡量保持一致,環(huán)境配置得配好(Jmeter 5.0,JDK 1.8);
(2)雙擊打開控制機中bin目錄下的create-rmi-keystore.bat,填寫完相關(guān)信息后,回車,會產(chǎn)生rmi_ keystore.jks文件,將此文件拷貝到執(zhí)行機的bin目錄下;
(3)找到執(zhí)行機中bin目錄下的jmeter.properties,打開jmeter.properties,對如下三處進行修改:
remote_hosts=192.168.1.10(本機IP)
server_port=1099(端口號)
server.rmi.ssl.disable=true(改false為true)
(4)雙擊啟動jmeter-server.bat ,啟動完后如圖4所示。
(5)回到控制機,找到j(luò)meter.properties,和執(zhí)行機類同,先改兩項:
server_port=1099(默認端口號)
server.rmi.ssl.disable=true(改false為true)
另外,remote_hosts=192.168.1.10:1099(執(zhí)行機器的ip:端口),若還有更多執(zhí)行機之間以英文逗號隔開。設(shè)置完之后找到j(luò)meter-server.bat雙擊打開。
(6)打開jmeter.bat已經(jīng)設(shè)定好的腳本:
假設(shè)設(shè)置的線程數(shù)是1,那么有N臺執(zhí)行機的話,實際并發(fā)數(shù)是N*1。
選擇遠程啟動單臺測試機,如圖5所示:(進行單個測試)
選擇遠程啟動所有測試機,如圖6所示:(所有機器一起啟動)
控制機顯示:
找到j(luò)meter.properties,取消mode=Standard 注釋后可在控制機看到響應(yīng)數(shù)據(jù)。
(7)此案例選用一臺控制機和四臺執(zhí)行機的部署,其中兩臺執(zhí)行機上告正常數(shù)據(jù),兩臺執(zhí)行機上告異常數(shù)據(jù)。
(8)注意事項:本文上傳的數(shù)據(jù)存放在csv文件中,應(yīng)在每臺測試機中存放相同的數(shù)據(jù),并和控制機中文件路徑保持一致。
本文使用Jmeter測試工具,選取基于Socket通信協(xié)議的物聯(lián)網(wǎng)管理平臺上傳數(shù)據(jù)作為性能測試點,對單機腳本調(diào)試和分布式部署的流程進行詳細說明,并對其中涉及到的注意事項進行總結(jié),能夠準(zhǔn)確可靠地測試系統(tǒng)的性能。