Jmeter跑性能腳本遇到的常見問題

本文總結了一些Jmeter執行性能測試時常見的問題。通常請求報java錯誤時,就需要在自己腳本或是運行環境上找原因了。

1. TCP連接數耗盡

  1. 在執行Jmeter性能測試腳本過程中,當線程數>500就會遇到這幾種錯誤,而且佔總數很多。
    Non HTTP response code: java.net.BindException/Non HTTP response message: Address already in use: connect
    Non HTTP response code: java.net.ConnectException/Non HTTP response message: Connection refused: connect
    包括不限於上面2個。

在這裏插入圖片描述
2. 這種情況還又一種表現是服務器的CPU忽高忽低。那是因爲你的機器本身就無法把請求發出去了。像左圖這樣。

在這裏插入圖片描述
3. 這時由於windows系統會默認TCP連接數不夠用。我知道的說法是默認連接數只有1000,每4分鐘回收一次,不確定具體數值,但確實需要在註冊表裏修改最大連接數與延遲時間。

  1. Win + R, 運行regedit
  2. 進入 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Performance
  3. 對着Performance右鍵,新建QWORD(32位) ,名稱: MaxUserPort, 值: 65534(十進制)
  4. 對着Performance右鍵,新建QWORD(32位) ,名稱: TcpTimedWaitDelay, 值: 30(十進制)

在這裏插入圖片描述

  1. 調好之後再跑一下,效果立竿見影。

在這裏插入圖片描述

2. JVM內存溢出

  1. 有的時候,執行腳本過程中,突然cmd框裏不動了,然後又一個報錯。還會在jmeter程序根目錄生成一個幾百兆的.h***開頭的文件。(具體報錯和文件名記不清了,以後補上)。通常多線程組,多用戶數,長時間,客戶機內存小會產生這樣的問題。這是因爲啓動Jmeter時,JVM分配給jmeter的內存不足以支撐跑完這個腳本。

  2. 我們可以修改jmeter.bat文件裏的相關參數來避免這個問題。

  1. 編輯你平時啓動jmeter gui的那個文件,也就是/bin/jmeter.bat文件。
  2. 搜索xms找到對應的這一行,根據你的實際情況修改這3個參數。(個人本地8G配置如圖)
    xms: 初始內存
    xmx: 最大內存
    MaxMetaspaceSize: 最大內存的永久保存區域

在這裏插入圖片描述

3. 客戶機所在網絡帶寬限制

最近在測試一個項目。要求併發非常高。我用5臺機器模擬6k併發,效果是最好的。達到1w併發時,TPS下降的厲害,響應時間也慘不忍睹。但是通過查看服務器CPU之後,發現CPU並不高。後來排查到原因是因爲,我的5臺客戶機1w個線程把公司局域網帶寬佔的滿滿的。自然就網速非常的慢了。(發現的契機是跑腳本時,公司wifi訪問系統奇慢,但4g訪問就正常)。所以就算有足夠的客戶機參與分佈式測試。可能帶寬的限制也會影響最終結果的準確性。
在這裏插入圖片描述在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章