jmeter分布式壓測(三)


一,Jmeter分布式部署測試--遠程連接多台電腦做性能測試

  什么是分布式測試:分布式測試是指通過局域網和Internet,把分布於不同地點、獨立完成特定功能的測試計算機連接起來,以達到測試資源共享、分散操作、集中管理、協同工作、負載均衡、測試過程監控等目的的計算機網絡測試

  在使用Jmeter進行接口的性能測試時候,由於JMeter是java應用,對CPU和內存消耗比較大,所以當需要模擬數以萬計的並發用戶時,使用單台機器模擬所有的並發用戶就會出現電腦卡死等現象,或者會引起java內存溢出的錯誤。為了Jmeter工具提供了更大的負載能力,這個時候就可以使用Jmeter提供分布式來控制多台電腦進行壓力測試 

二,分布式的原理

  1,jmeter分布式測試時,選擇其中一台為控制機(Controller),一般都是我們自己的電腦,其他機器作為代理機器(Agent),一般可以用服務器做代理

  2,執行時,Controller會把腳本發送到每台Agent上,Agent拿到腳本后開始執行,Agent執行時不需要啟動jmeter,只需要把jmete-server文件打開就行,他是通過命令行來執行的

  3,執行后,Agent會把結果回傳給Controller,Controller會收集所有Agent的信息並匯總

  其他的原理解釋:

  1. 選擇其中一台作為Master機(調度機),其他機器作為Slave機(執行機)
  2. 執行時,Master機會把腳本發送到每台Slave機上,Slave機拿到腳本后就開始執行,不需要啟動GUI
  3. 執行完成后,Slave機會把結果回傳給Master機,Master機會收集所有Slave機的信息,並匯總

  

 

三、分布式配置

  前提條件:

  • Slave機器的jdk版本需要跟Master機器的jdk版本保持一致
  • Slave機器的Jmeter版本以及插件需要跟Master機器保持一致,操作方法是直接將Master的Jmeter安裝目錄打包后解壓到Slave機器上
  • Slave機器的網絡需要跟Master機器的網絡保持在同一個局域網,可以ping通

  1.Master機器配置

  在Jmeter的%JMETER_HOME%\bin目錄下,使用文本編輯工具打開jmeter.properties配置文件,配置以下參數

  

   第一個ip是本地的ip,第二個ip是slave機器上的ip

  配置完成后重啟Jmeter  

  2.Slave機器配置

  在Jmeter的%JMETER_HOME%/bin目錄下,使用文本編輯工具打開jmeter.properties配置文件,配置以下參數

  

  如果是linux機器上,則要給bin目錄賦予執行的權限:chmod +x -R bin/,還要注意防火前是否開放了1099端口

  3,啟動salve的jmeter,   ./jmeter-server

  

   解決辦法:./jmeter-server -Djava.rmi.server.hostname=192.168.3.180(這是我的ip)

  提示缺少jsk文件

  

  不管是負載機還是控制機(如果控制機也作為負載機),執行jmeter-server.bat(linux下執行jmeter-server,另外:linux下檢查是否啟動成功:ps -ef | grep jmeter-server),報錯,

  是因為從JMeter 4.0開始,RMI的默認傳輸機制將使用ssl。SSL需要密鑰和證書才能工作,不使用ssl將存在安全漏洞

  解決辦法:在控制機bin目錄下,點擊:create-rmi-keystore.bat

  

  根據提示一直填下去,遇到Yes與No就直接填y,然后回車就ok了

  回車后會在bin目錄生成文件:rmi_keystore.jks

  

  點擊:點擊jmeter-server.bat, 啟動RMI注冊表

  復制控制機生成的rmi_keystore.jks到每一台負載機jmeter的bin目錄下

  再次啟動就正常了:

  ./jmeter-server -Djava.rmi.server.hostname=192.168.3.180(這是我的ip)

四,運行

  在控制機查看是否配置成功,需要查重新啟動jmeter

  

  我就只使用了一個savle(192.168.3.180)

  

   啟動以后從slave上可以看到兩行日志:

  

  注意:如果客戶端提示找不到系統文件之類的或者提示java.rmi.ConnectIOException: non-JRMP server at remote endpoint,就需要在master和salve的jmete.properies中打開找到#server.rmi.ssl.disable=false,給變更成server.rmi.ssl.disable=true(注意是控制器和壓力機都要更改)。每次變更后都要重新打開jmeter

   我本地的機器沒有作為負載機,所有沒有消耗任何的資源

  這里要注意的是:

  1,控制機和負載機的jdk,jmeter版本都必須一致

  2,控制機用的插件,負載機上也必須有(可以去ext目錄下對比)

  3,腳本不需要傳遞到負載機,但是如果有csv等數據文件,就必須傳到負載機上,而且路徑要寫負載機的路徑

  4,負載機只能是一種,要么是windowins要么是liunx,我這里是linux

 


免責聲明!

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



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