Windows Server端口用盡服務不能訪問
問題
應用程序頁面有時訪問正常,有時不能訪問。
查詢結果
網上說是有連接沒有關閉,佔用了端口資源,查一查,果然,進程都結束了,依然後很多TIME_WAIT狀態的連接未釋放,再查看所有的time_wait連接,直接過去好幾屏,計數也不用了,肯定有問題。
# windows下查看當前所有的tcp連接
netstat -ano
# windows下查看所有8080端口的tcp連接
netstat -ano |findstr "8080"
# windows下查看所有的“TIME_WAIT”狀態的tcp連接
netstat -ano |findstr "TIME_WAIT"
# windows下統計time_wait出現的次數(按行統計) /i 忽略大小寫
netstat -ano |find /i /c "TIME_WAIT"
設置TIME_WAIT
隨即,查看一下有沒有設TIME_WAIT的自動關閉時間(默認4分鐘)、還有windows下的大端口服務(雖然系統總共可使用的Ports有65536
個,但從本機連到外部網路(Outbound Connections)的連線數最多隻會使用到5000
個而已【此爲系統默認值】)。
-
cmd--->regedit
進入註冊表 -
進入
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters
-
新建
DWORD
類型的註冊表項,命名爲:MaxUserPort
值數據:60000
(用十進制的格式錄入進去,此值的有效範圍爲5000-65534
) -
新建
DWORD
類型的註冊表項,命名爲:TCPTimedWaitDelay
值數據:30
(TIME_WAIT
的自動斷開時間,默認爲4
分鐘)
設置完大端口及
time_wait
時間後,重新啓動tomcat
,能正常啓動了,訪問應用也正常了。但是有個現象就是time_wait
的連接數似乎沒有降低,同事說是微軟操作系統的bug
,然後重新啓動服務器,再觀察time_wait
的鏈接,發現變少了,而且也能自動釋放了。
結論
由於大量的TIME_WAIT
連接未被釋放,導致佔用的端口資源一直未被回收,出現了緩衝區空間不足的問題,應用也總是自動斷線。
參考https://blog.csdn.net/woshiji594167/article/details/81874095?utm_source=app