Jmeter分布式運行時遇到的問題及解決辦法--Lph


Jmeter壓測過程中遇到的那些事

1.      內存溢出

現象:GUI界面上,線程卡住,查看DOS窗口,提示內存溢出

解決方法:打開jmeter.bat文件,把set HEAP=-Xms512m –Xmx1024m修改為set HEAP=-Xms512m-Xmx512m。

為何要如此設置,不清楚原因。需要大牛指點原因。

2.      slave啟動jmeter-server.bat,提示“Could notfind ApacheJmeter_core.jar”

原因:程序找到jmeter下的文件,是因為沒有配置JMETER_HOME

解決方法:

(1)高級系統配置->環境變量,新建系統變量:JMETER_HOME等於你jmeter保存的根目錄

(2)系統環境變量path中增加%JMETER_HOME%\bin。

然后重啟jmeter-server.bat。jmeter環境是基於Java環境已配置。

3.   客戶機可以正常ping通,但是不支持master訪問,jmeter_server.bat也正常啟動。

原因:客戶機的防火牆沒有關閉。最好兩邊防火牆都關閉。

4.  非GUI下啟動遠程服務器

(1)啟動全部遠程服務器,即啟動jmeter.properties文件中remote_hosts配置的所有遠程服務器;

   命令如下:jmeter -n -t .\Mark\search_list.jmx -r

(2)啟動指定的遠程服務器

   命令如下:jmeter -n -t .\Mark\search_list.jmx -R server1,server2

5.啟動jmeter-server.bat時拋出了如下異常 (用過-是可以的)

  1.  
    Server failed to start: java.rmi.server.ExportException: Listen failed on port:
  2.  
    0; nested exception is:
  3.  
            java.io.FileNotFoundException: rmi_keystore.jks (系統找不到指定的文件。)
  4.  
     
  5.  
    An error occurred: Listen failed on port: 0; nested exception is:
  6.  
            java.io.FileNotFoundException: rmi_keystore.jks (系統找不到指定的文件。)
  7.  
    errorlevel= 1

     

     

問題分析
1.可能監聽的端口被占用,修改端口號
2.Server相關的rmi配置需要調整
解決方案 -(用過是可以的)
在目錄\apache-jmeter-5.0\bin下,用Notepad++編輯器打開名為jmeter.properties的文件
找到server.rmi.ssl.disable=false,改為true,並把前面的#去掉
保存配置調整,重新啟動jmeter-server.bat即可恢復正常。

這個最好在做分布式的時候,控制機和代理機的jmeter.properties文件這個地方一並修改,不修改還是會報錯。

6.jmeter-server.bat啟動報:WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002.

 嘗試使用 :以管理員身份啟動。

7.Don't use GUI mode for load testing

這個是說不要用jmeter界面操作運行,網絡上很多說正式測試最好用命令執行運行,不是很懂,但在jmeter界面操作運行也沒什么問題。

(1)切換到jmeter的bin目錄;

以命令行的方式啟動:jmeter.bat -n -t C:\Users\Administrator\Desktop\測試文件\壓力測試文件\分布式.jmx -l demo_lt.jtl -e -o C:\lt

注:
此處指定結果文件為demo_lt.jmx,運行后生成的結果文件(可以指定生成位置,沒有指定就在jmeter的bin目錄下):
demo_lt.jtl;統計目錄為C:\lt

(2) 查看運行結果
運行JMeter,在導航欄中點擊“ 查看結果樹”,主界面中點擊“瀏覽”,選擇生成的結果文件demo_lt.jtl,效果如下圖所示:

圖4 查看結果樹

(3) 查看統計結果
打開目錄C:\lt,點擊該目錄下的index.html,可以看到詳細的統計結果。下面兩張圖分別截取了性能指標和綜合統計信息部分。

圖5 性能指標

圖6 綜合統計信息

8. 分布式下測試master機器沒有返回結果

slave機器服務終端顯示,但是一個非常簡單的腳本,執行超級慢,感覺不應該:

Starting the test on host 192.168.5.158:1099 @ Fri Aug 17 14:00:44 GMT+08:00 2018 (1534485644989)
Finished the test on host 192.168.5.158:1099 @ Fri Aug 17 14:05:18 GMT+08:00 2018 (1534485918786)

master機器沒有返回結果。

解決:

1.懷疑jmeter環境變量配置,反復查看沒有問題

2、懷疑jmeter.properties文件修改錯誤,反復查了master、slave機器的配置文件,沒有問題

3、將問題轉向機器IP,查看master機器IP,slave機器IP,都用的固定IP,沒有問題

4、重新啟動master機器的jmeter-server.bat,發現了和slave機器異樣的地方,master機器顯示的endpoint:IP是Vmware network Adapter vmnet1(安裝VMWare的虛擬IP),jmeter-server啟動的時候自動識別了虛擬機IP,沒有識別本地網絡IP

5、將網絡適配器中的虛擬適配器禁用掉,重新啟動jmeter-server.bat,endpoint變成了本地IP,再次嘗試遠程執行,成功,復雜的腳本執行也很快。

最終發現問題出現在第四個上:(我按照第4,5個方式做了,但是最后又有了問題,下面是我的試驗情況,以及這樣會產生什么問題)

jmeter-server.bat啟動時的ip是虛擬機的ip。可以在本地開啟虛擬機,在本事使用 ipconfig查一下:

上面本機Jmeter-server.bat;啟動顯示的ip地址。本機jmeter.properties里設置的remote_hosts的ip址要與Jmeter-server.bat啟動顯示的ip地址一樣。不要按照上面那樣去禁用網絡設配器的虛擬機適配器。如果禁用了網絡設配器的虛擬機適配器,本機Jmeter-server.bat啟動時它就會用無線網絡的ip地址,那樣你再把jmeter.properties里的remote_hosts,設置為無線網絡的ip地址,那樣agent(虛擬機中代理機)機就會響應請求、數據,而界面也會彈出錯誤,如下圖:

禁用網絡設配器的虛擬機適配器,再配置本地jmeter.properties里的remote_hosts為無線網絡的ip地址的后果:

那樣你在本機用:telnet  192.168.61.128(虛擬機ip) 1099;

發現連接不上;

而當你把禁用的網絡設配器的虛擬機適配器啟動;再把本地jmeter.properties里的remote_hosts設置為本地meter-server.bat啟動時的ip,就會發現:telnet  192.168.61.128(虛擬機ip) 1099 成功。這是自身實踐的結果,因為禁用了網絡設配器的虛擬機適配器,而去用無線網絡的ip導致一直報上圖 refused  to host錯誤,再在去網絡上找解決這個錯誤的方法,試了老半天沒成功,最終還是啟用禁用網絡設配器的虛擬機適配器,使用虛擬機的ip才成功。這個是我自身的這錯誤的原因,希望大家對大家有借鑒作用。

補充:如果你在虛擬機發現telnet 169.254.202.187(本機中ipconfig出來虛擬機ip) 1099連接不同,可以對這個虛擬機適配器進行關閉,使用另外的ip嘗試(一般總有一個能夠連接上)

9、Jmeter分布式運行報該錯誤時:(用過)

Error in rconfigure() method java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: kg.apc.jmeter.threads.UltimateThreadGroup (no security manager: RMI class loader disabled)

 

 

解決方法:(用過-可以)

 

 

 

10、Jmeter分布式運行時報該錯誤時(用過):Error in NonGUIDriver java.lang.RuntimeException:Following remote engines could not be configured/或者 Error in NonGUIDriver java.lang.RuntimeException: Could not find the  configured時 

在做了個負載測試跑半個小時候,再次編輯線程數保存,重新啟動分布式運行時報如下錯誤:

 

 

解決方法: 重啟一下拒絕連接的那台執行機,然后再重新啟動jmeter server.bat,即可。(用過-可以)

 

 11、jmeter分布式報錯,Error in rconfigure() method java.rmi.ConnectException: Connection refused to ho st

 

slave機器:Linux(4台)

准備壓力機過程中,為方便省事,只配置了一台,其余3台是從這一台克隆過來的

執行分布式壓測,返回如下error:

Error in rconfigure() method java.rmi.ConnectException: Connection refused to ho
st: 192.168.0.105; nested exception is:
java.net.ConnectException: Connection refused: connect

查看jmeter-server啟動命令,發現slave機器使用的ip是克隆源ip

 

 

 

解決方法:slave機器上,bin目錄下修改jmeter-server,改為slave機器ip(用過)

 

 12、剛跑完負載測試時,改變線程數再次跑分布式運行時,會報如下錯誤:

 

 

解決方法:將執行機與控制機的jmeter server.bat關閉重啟即可,因跑完負載測試時,jmeter server.bat運行只有開始沒有結束

 

 

 



———————————————
版權聲明:本文為CSDN博主「fish_11」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/Fish_11/article/details/77648645


免責聲明!

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



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