1. 程式人生 > 其它 >Jmeter效能測試遇到的問題

Jmeter效能測試遇到的問題

Jmeter 做效能測試遇到了一些問題,就記錄下了問題及其解決的方法。

問題1:Jmeter併發超過 300 報錯

  “java.net.SocketException:Socket closed”,300個 request 請求之後幾個請求報錯,起初以為是服務端的問題,檢視服務端狀態,cpu 和記憶體使用率都很低,cpu 空閒達到98%以上,證明請求沒有傳送到服務端,檢視日誌也沒有報錯資訊,證明不是服務端的問題,然後檢視報錯的響應,發現是 Jmeter 的報錯。

原因:JMeter 傳送 http 請求時,一般預設選擇 use keepAlive 長連線協議,預設勾選該選項,其配置  jmeter.properties 中的空閒等待時間設定預設被登出,也就是不會等待,一旦連線空閒,則立馬斷開連線,導致壓測中出現了事務失敗情況,要解決此問題,需要設定空閒等待時間。

解決方法:修改 jmeter.properties 檔案中空閒等待時間,開啟檔案,並找到httpclient4.idletimeout ,將值設定為 60000 單位為毫秒也就是60秒,並將該行註釋去掉並儲存檔案,重新 Jmeter 後配置方生效,後面我即使併發到了2000也沒有報 Socket closed 的錯誤。

修改前:

修改後:

問題二:Jmeter 單機設定的併發使用者數不要超過2000,實戰用到的壓測機8核CPU、16G記憶體,為了驗證Jmeter單機支援的最大併發使用者,先設定5000併發 Jmeter執行後直接報錯,機器記憶體不足。

  將併發使用者數調整2000 可正常執行,但 Jmeter 官方建議,測試 web 應用 單機併發 350-500個使用者,測試後端 API 效能壓測機8核CPU + 64位作業系統,單機併發 900-1100使用者。做效能壓測試時可依照官方建議設定單機併發使用者數,若壓測機器配置較高,可適當提升併發使用者量,但最好不要超過2000併發使用者。