當前位置:首頁 » 網頁前端 » jmeter回放腳本出現403錯誤
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

jmeter回放腳本出現403錯誤

發布時間: 2023-06-30 15:48:22

⑴ Jmeter 問題錦集

java.io.FileNotFoundException:rmi_keystore.jks

文件校驗問題

1、不進行文件校驗,打開 [ jmeter 安裝目錄 ]\bin\jmeter-server.bat 文件

2、運行 create-rmi-keystore.bat (Windows)/ create-rmi-keystore.sh (Linux) 文件並自行填寫相關信息,運行後,bin 目錄下會多出一個 rmi_keystore.jks 文件,然後將這個文件拷貝到想要運行的 slave 機上,就可以不使用方法1

Error in rconfigure() method java.rmi.ConnectException: Connection refused to host: 192.168.xxx.xxx; nested exception is:
java.net.ConnectException: Connection timed out: connect

1、192.168.xxx.xxx 這個IP 可能是虛擬網卡的 IP,關閉所有的虛擬網卡,只保留本地網路
2、檢查slave伺服器的防火牆是否打開,需要關閉
3、通信雙方的機器沒有識別到有效的遠程IP,考慮將遠程方法調用伺服器的主機IP進行固定設置,再作效果檢查
4、開始測試,但是測試速度非常慢,測試結果也是非常大的值,檢查slave伺服器和被測試伺服器之間是否可以 ping 通地址

第3點分析相應解決方法:
Master機修改 jmeter.bat (windows)/ jmeter.sh (Liunx)

Error in rconfigure() method java.rmi.ConnectException:Connection refused to host

1、查看埠是否被佔用

1、更換埠

java.net.ConnectException:Connection timed out:connect

由於連接被拒絕,這意味著防火牆可能已切斷連接

需要在JMeter和目標伺服器之間打開埠

Response too large to be displayed. Size: 412152 > 204800

未設置察看結果樹的大小

1、打開 [ jmeter 安裝目錄 ]\bin\user.property 文件

2、右擊測試用例——添加——監聽器——保存響應到文件, 填寫要保存的文件名
3、將文件中的返回結果粘貼到此用例的響應斷言中

Not able to find Java executable or version. Please check your Java installation. errorlevel=2

1、errorlevel=1,當前系統安裝的 jdk 版本過低
2、errorlevel=2,沒有配置 jdk 環境變數所致
3、errorlevel=3,當前系統安裝的 jdk 版本過低,不符合 jmeter 要求所致

通用方法:
配置對應這個 jmeter 版本的 jdk 版本的環境變數

第1點分析,其他解決方法:
打開 jmeter.bat 文 件,注釋 set DUMP=-XX:+HeapDumpOnOutOfMemoryError

Bad call to remote host

1、檢查 salve 機器上的 jmeter-server 是否啟動
2、檢查 JMeter.properties 中 remote_hosts 的配置是否錯誤

1、啟動 salve 機器上的 jmeter-server
2、正確配置 JMeter.properties 中 remote_hosts

1、Non HTTP response message: The target server failed to respond
2、Non HTTP response code: java.net.SocketException

調整超時時間,jmeter 的 http 請求中,工具會默認勾選 Use KeepAlive ,在運行時,jmeter.properties 中的 httpclient.timeout 設置默認是注銷的,也就是連接空閑,立馬斷開

打開 [ jmeter 安裝目錄 ]\bin\jmeter.properties 文件
根據情況設置10-60毫秒,能解決報錯問題,問題還是沒有真正解決

Server failed to start: java.rmi.RemoteException: Cannot start. *** is a loopback address.
An error occurred: Cannot start. *** is a loopback address.

沒有指定主機導致這個錯誤

1、修改 hosts 文件

2、打開 [ jmeter 安裝目錄 ]\bin\jmeter.properties 文件

Waiting for possible shutdown message on port 4445

在 master 跑測試腳本時,會一直提示如下信息,導致測試一直跑不起來
這個是用於監聽shutdown message的,如果不需要,可以直接設置為0即可

打開 [ jmeter 安裝目錄 ]\bin\jmeter.properties 文件

Could not reserve enough space for 2097152KB object heap
errorlevel=1

Jmeter 內存不足

打開 [ jmeter 安裝目錄 ]\bin\jmeter.bat 文件

could not find ApacheJmeter_core.jar

找不到 jdk 環境

1、正確安裝對應版本的 jdk
2、正確設置環境變數

jmeter.gui.action.RemoteStart: Failed to initialise remote engine java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is:

配置了 127.0.0.1,但是未開啟本機的 jmeter-sever.bat/jmeter-sever

開啟本機的 jmeter-sever.bat/jmeter-sever

運行成功,響應斷言也正確通過,但是察看結果樹里為空

模式(Mode)(采樣結果發送模式)默認是Standard,在采樣結果產生後立即發送

打開 [ jmeter 安裝目錄 ]\bin\jmeter.properties 文件

Response code: Non HTTP response code: java.net.SocketTimeoutException
Response message: Non HTTP response message: connect timed out

發生該錯誤時,jmeter已經連接上伺服器,查看load time沒有超過設定的request timeout時間,錯誤可能的原因是,伺服器那邊未處理該線程的請求,或者為保證服務能力,斷掉了連接。
為了驗證該猜想,持續大於半小時向伺服器發送該並發數量的請求,一段時間後,request收到503的response,證明猜想



Java.NET.BindException: Address already in use: connect

短時間內new socket操作很多,而socket.close()操作並不能立即釋放綁定的埠,而是把埠設置為TIMEWAIT 狀態,過段時間(默認240s)才釋放,(用netstat -na可以看到),最後系統資源耗盡(windows上是耗盡了pool of ephemeral ports ,這段區間在1024-5000之間)

在運行 JMeter agent 的機器上,添加註冊表條目HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

jmeter腳本運行的過程中,伺服器性能參數沒有明顯變化 (CPU,內存,I/O),但request的響應時間很長。

觀察jmeter agent機器網路使用情況,網路使用持續達到帶寬的限制峰值。request 發送的過程中pending在網路中,實際並發的request並沒有同一時間到達伺服器,所以伺服器沒有明顯變化。

提高jmeter agent機器網路帶寬。

java.io.IOException: Error writing to server
java.net.SocketException: Connection reset

可能是本機的 JVM 太小了

打開 [ jmeter 安裝目錄 ]\bin\jmeter.bat 文件

java.net.SocketException: Unrecognized Windows Sockets error: 0: recv failed



打開 [ jmeter 安裝目錄 ]\bin\jmeter.properties 文件

java.net.SocketTimeoutException: Read timed out



打開 [ jmeter 安裝目錄 ]\bin\jmeter.properties 文件

For performance it is advised to check "Interpret Condition as Variable Expression"
and use __jexl3 or __groovy evaluating to true or false or a variable that contains true or false.
${JMeterThread.last_sample_ok) can be used to test if last sampler was successful

對於4.x之後的版本 JMeter 中的 If Controller,在Expression輸入框中直接輸入判斷的表達式,如1 == 1、${threadNum} > 2,而不做求值計算(true/false)就執行JMeter是沒有效的,達不到預期的效果。採用JMeter比較早期的版本(如:2.x版本),直接就寫判斷的表達式,並沒有作真假求值運算也能被識別

1、在Expression輸入框中,建議將判斷條件解釋為變數表達式,並使用__jexl3函數或__groovy函數對該變數表達式求值為true/false
2、可輸入值為true/false的變數
3、${JMeterThread.last_sample_ok}可用於檢測最後一個取樣器是否成功執行

java.lang.IllegalStateException: Engine is busy - please try later

1、可能是防火牆規則被阻止
2、控制機、執行機未設置需要連接的IP

1、關閉控制機、執行機的防火牆
2、打開 [ jmeter 安裝目錄 ]\bin\jmeter-server 文件

3、打開 [ jmeter 安裝目錄 ]\bin\system.properties 文件

Response code: Non HTTP response code:org.apache.http.conn.ConnectTimeoutException
Response message: Non HTTP responsemessage: Connect to 10.15.107.112:9089 timed out

Non HTTPresponse code 說明沒有收到來自伺服器的 response。
導致 ConnectTimeoutException 錯誤的可能有 JMeter 本身問題,也可能是伺服器問題。

通過分布式運行 JMeter 的方式來消除 JMeter 本身的影響