
【資料圖】
在windows環境下,使用jmeter進行性能測試時,在并發量較大的情況下,發現有大量的接口報錯報錯內容為:java.net.BindException: Address already in use: connect
經查詢資料得知,windows提供給TCP/IP鏈接的端口為 1024-5000,并且要四分鐘來循環回收它們,就導致我們在短時間內跑大量的請求時將端口占滿了,導致如上報錯。同時對比TPS報錯及監控平臺連接數,佐證了這一點。
TPS圖表,紅色框框內為基本全部報錯。
同一時間監控平臺監控到的連接數情況
對照可以看出,當連接數超過5000左右的時候,開始大量報錯。在連接數釋放的過程中,又會有請求成功,當再次達到5000的時候,后續的連接又幾乎全部失敗。
1.cmd中輸入regedit命令打開注冊表;2.在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters右鍵Parameters;3.添加一個新的DWORD,名字為MaxUserPort;4.然后雙擊MaxUserPort,輸入數值數據為65534,基數選擇十進制;5.完成以上操作,重新進行測試,就可以解決問題
TCP沒有再報錯
連接數達到了8K+