鄭永剛



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