為什么Jmeter 運行時時到達持續時間不停止?
在做並發測試時,遇到了設置持續時間,但是到達了持續時間后,一直不停止;線程組設置的信息如下:
從圖中線程組設置可以看出Jmeter需要開啟100個線程並且在300s內持續性的給后端服務器發請求,運行后從右上角看到,已經運行超過了300s,但是線程一直沒有停止。
從jemeter.log 日志查看不停的打印Stopping because end time detected by thread
從網上查資料得知是因為某些線程被阻塞了,出現線程阻塞的原因是JMeter的所申請的內存不足導致的,解決該問題有幾種方法:
- 調整腳本,可以通過調整並發數、減少斷言,盡量不要使用監聽器來減少額外的內存開銷
- 非GPU模式下運行Jmeter腳本
- 通過調整jmeter.bat 中內存參數
默認配置是:set HEAP=-Xms1g -Xmx1g -XX:MaxMetaspaceSize=512m
根據實際情況進行修改heap 參數,我的是改成了
set HEAP=-Xms512m -Xmx1024m
注意:“Xms”(代表初始化堆棧內存的大小),“Xmx(代表最大內存池可以分配的大小)”
修改后,重啟Jmeter。
可通過jconsole.exe驗證jmeter內存設置是否成功