簡述:
簡單列出jmeter壓測中常見的報錯,及原因分析解決方法。
問題:
1、 socket closed
問題原因:在JMeter下,發送http 請求時,一般都是默認選擇了use keepAlive,這個是連接協議,JMeter坑就在這里,默認勾選了這個(如果不勾選的話,也不會保存),但其配置JMeter.properties中的時間設置默認卻是注銷的,也是是說,不會等待,一旦連接空閑,則立馬斷開了,導致我們壓測中出現了事務失敗的情形。
解決:修改jmeter.properties文件中 httpclient4.idletimeout=<time in ms> 設置成自己覺得合理的時間,一般可設置成10-60s(表示連接空閑10s后才會斷開),注意這邊單位是ms。修改完成后再次壓測,錯誤不再有了。

2、address already in use:connect
運行腳本報錯: java.net.BindException: Address already in use: connect

原因分析:
這個問題的原因是windows端口被耗盡了(默認1024-5000),而且操作系統要 2~4分鍾才會重新釋放這些端口,所以可以增加windows的可用端口來解決。windows端口最大數為65534
解決方法一:
修改操作系統注冊表
1、cmd輸入:regedit
2、找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters
3、新建兩個 DWORD值,name:MaxUserPort,value:65534(十進制);name:TcpTimedWaitDelay,value:30(十進制)
4、重啟系統
解決方法二:
設置線程組時,勾選 same user on each iteration 。

3、java.lang.OutOfMemoryError: Java heap space
原因:觀察運行jmeter機器的內存,占用較高,超過了jmeter設置的內存上限。
解決方案:修改jmeter配置文件,調整內存可用的范圍
修改/bin/jmeter.bat文件:找到這2行
set HEAP=-Xms256m -Xmx256m
set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m
改為:
set HEAP=-Xms1024m –Xmx2048m(最大值不能超過系統內存的1/2)
set NEW=-XX:NewSize=128m -XX:MaxNewSize=512m
4、jmeter腳本運行的過程中,服務器性能參數沒有明顯變化(CPU,內存,I/O),但request的響應時間很長。
原因:觀察jmeter agent機器網絡使用情況,網絡使用持續達到帶寬的限制峰值。request 發送的過程中pending在網絡中,實際並發的request並沒有同一時間到達服務器,所以服務器沒有明顯變化。
解決方案:提高jmeter agent機器網絡帶寬。
5、JMeter結果樹響應數據中文亂碼解決辦法
解決辦法:打開apache-jmeter-2.11\bin\jmeter.properties文件,搜索“encoding”關鍵字,找到如下配置:
# The encoding to be used if none isprovided (default ISO-8859-1)
#sampleresult.default.encoding=ISO-8859-1
將注釋刪掉,並改成utf-8編碼,即:
The encoding to be used if none isprovided (default utf-8)
sampleresult.default.encoding=utf-8
重啟JMeter即可
6、Response code: Non HTTP response code: java.net.SocketTimeoutException 或者Response message: Non HTTP response message: connect timed out
7、Jmeter服務器反饋登陸不成功問題
使用Badboy錄制了公司一個項目的登錄功能
導入到JMeter后,執行場景,發現登錄校驗成功,但后續的動作都未成功;
問題原因:在登錄校驗成功后,進行重定向時,Cookie被重置的;
解決辦法:校驗頁面的HTTP請求中,有看到一個:自動重定向、跟隨重定向的設置;
修改默認的“自動重定向”為“跟隨重定向”
重新執行場景。
8、Jmeter進程停止不了
問題原因:設置的內存太小了。
解決辦法:在JMeter的運行jmeter.bat 用記事本打開 修改個參數,
set HEAP=-Xms512m -Xmx4000m,重啟。
9、怎么設置線程組下面指定的請求指定執行多次?
比如我想測試一個網站,用badboy錄制了一個腳本,腳本包含了登錄過程以及登陸進去后續的操作,但是我現在要進行壓測,壓測的時候只登錄一次,后面的請求可以循環多次。
解決辦法:給想要執行指定循環次數的請求 插入上級-》邏輯控制器 -》循環控制器,然后在循環控制器自定義循環次數。
相關連接:
https://www.cnblogs.com/jane4321/p/11013042.html .......................................jmeter常見報錯
https://blog.csdn.net/zhusongziye/article/details/78796738.............................jmeter常見問題及報錯
https://mp.weixin.qq.com/s/ZTKyYGh45XeF8rQdgK-PHw ...............................性能分析之常見指標
https://blog.51cto.com/ydhome/1864340 ........................................................Jmeter之響應結果亂碼解決
https://blog.csdn.net/weixin_44341990/article/details/123657042 .................集合點使用
https://blog.csdn.net/glongljl/article/details/80229766 ......................................body data設置中文顯示不為亂碼
https://blog.csdn.net/heyp113/article/details/109737319 ..................................Charles抓包工具抓取Jmeter數據
