jmeter壓力測試報錯:java.net.BindException: Address already in use: connect
阿新 • • 發佈:2021-12-23
jmeter進行壓力測試時,在長期執行緒較高的進行測試時會報如下錯誤:
排除問題:
首先先檢視伺服器的日誌,發現沒有報錯。
然後檢視nginx資料,發現請求數和測試發出的請求數不一致,伺服器接收到的少,就想到丟失請求。
後來經過查詢資料瞭解是windows 機器的問題,
原因:windows提供給TCP/IP連結的埠為 1024-5000,並且要四分鐘來迴圈回收它們,就導致我們在短時間內跑大量的請求時將端口占滿了,導致如上報錯。
解決辦法(在jmeter所在伺服器操作):
1.cmd中輸入regedit命令開啟登錄檔;
2.在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters右鍵Parameters;
3.新增一個新的DWORD,名字為MaxUserPort;
4.然後雙擊MaxUserPort,輸入數值資料為65534,基數選擇十進位制;
5.完成以上操作,務必重啟機器,問題解決。
PS:雖然可以進行正常測試,但是過了幾天增加執行緒數後又出現同樣的問題,還需要進行以下配置:
在上述第三步後,再新增TcpTimedWaitDelay,數值為30-300 選擇十進位制。
同樣還是需要重新啟動電腦。