編輯器加載中...Java版C/S程序,作壓力測試的時候發現當客戶端連續創建連接一段時間后報 Address already in use : connect ...... 亂七八糟一堆異常 再嘗試建立連接已經連不上了,通過 netstat -a 命令查看,有一大堆狀態為 TIME_WAIT 的占用連接不被釋放 網上查到很多這類問題解決辦法 問題原因: Java的 Socket.close() 並不能立即釋放連接,會造成一段時間內 TIME_WAIT 的狀態 操作系統可供使用的連接數有默認限制,很快會被占滿 解決辦法 1. Tomcat中Connector配置里增加輔助參數(經驗證無效) Xml代碼
2. 修改操作系統注冊表(經驗證能夠解決問題) 1、打開注冊表:regedit 2、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\TCPIP\Parameters 3、新建 DWORD值,name:TcpTimedWaitDe,value:30(十進制) –> 設置為30秒,默認是240秒 4、新建 DWORD值,name:MaxUserPort,value:65534(十進制) –> 設置最大連接數65534 5、重啟系統