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時拋出了如下異常 (用過-是可以的)
-
Server failed to start: java.rmi.server.ExportException: Listen failed on port:
-
0; nested exception is:
-
java.io.FileNotFoundException: rmi_keystore.jks (系統找不到指定的文件。)
-
-
An error occurred: Listen failed on port: 0; nested exception is:
-
java.io.FileNotFoundException: rmi_keystore.jks (系統找不到指定的文件。)
-
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