windows server2008 SP1 TCP端口耗盡分析報告


轉自:MSSQL技術交流群 群友的文檔

 TCP端口耗盡分析報告

1、問題描述

2022年4月1日早上10點左右收到客戶報障說,OA系統的批處理作業無法運行。

  

2、環境描述

當前是一個2節點的故障轉移群集數據庫 版本為SQLServer 2008

3、問題分析

3.1  查看數據庫報錯信息

可以看到當前SqlServer 代理無法無法登錄數據庫執行相關作業,導致4月1日的作業沒有任何作業自動執行

  


嘗試手工執行其中一個作業報錯如下,提示無法訪問連接服務

  

 

 

通過分析,該鏈接服務器正常。

3.2  查看系統日志

   

通過分析系統的日志可以發現操作系統無法連接域控制器建立連接。通過測試發現當前節點無法與其它服務器建立連接,本地使用SSMS也無法連接,而別人是可以連接進來的。

通過查詢微軟官方網站發現如下相關錯誤信息。

端口消耗問題疑難解答 - Windows Client Management | Microsoft Docs

於是推測是由於TCP端口耗盡的問題。

3.3   查看操作系統版本

   

 

 

可以看到當前系統版本為windowsserver 2008 SP 1,這就與一個windows20008 TCP端口耗盡的bug聯系起來了。

3.4  查看當前TCP端口使用情況

執行netstat -n 查看當前網絡端口使用情況,可以看到當前本地端口已經使用到了65535端口。

  

 

 

3.5   查看TCP端口設置

可以看到當前TCP設置為默認起始端口為49152,端口數為16384,即最大端口數為65536已經被消耗殆盡

netsh int ipv4 show dynamicport tcp

  

從49152端口號開始 一直到65536 一共16384個 TCP動態端口

4、問題總結與處理建議

4.1   原因總結

  • OA批處理無法執行原因

批處理是通過SQL代理來執行的,SQL代理需要連接到數據庫進行執行,SQL代理服務因為運行在節點63上面,它沒有本地端口使用所以無法連接自己的SQLServer數據庫執行作業,從而導致報錯。

  • TCP端口被消耗殆盡的原因

cmd 運行 systeminfo   

  

當前操作系統為windows2008 SP1,查詢系統的啟動時間為2020年10月31日,到故障時間為止已經運行500多天,這應該是windows2008系統的一個bug<在操作系統運行497 天后未關閉 TIME_WAIT 狀態的所有 TCP/IP 端口>,這也是導致批處理無法正常執行的根本原因。

4.2   臨時解決辦法

目前已經已經通過增加TCP端口個數暫時解決批處理問題。

1、請以管理員身份打開CMD,運行如下命令:
netsh interface ipv4 show tcpstats
netsh int ipv4 show dynamicport tcp
查看一下,是否端口耗盡,目前端口數量是多少,如果確認端口耗盡。
2、 增大動態端口數量
netsh int ipv4 set dynamicport tcp start=1025 num=60000
其中1025是起始端口號,num為數量,上述命令意思為從1025開始的60000個端口,到61025結束。
注:該步驟無需重啟機器, 立即生效
修改后運行命令檢查配置
3、 降低Time Wait時間,最低為30秒
打開注冊表,定位到 HKLM/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters
新增鍵值 TcpTimedWaitDelay,類型REG_DWORD , 設置為十進制30
注:修改后重啟生效
以上是對ipv4下的tcp協議操作,其他協議命令如下:
netsh int ipv4 show dynamicport tcp
netsh int ipv4 show dynamicport udp
netsh int ipv6 show dynamicport tcp
netsh int ipv6 show dynamicport udp
簡單的例子如下:
netsh int ipv4 set dynamicport tcp start=10000 num=1000
netsh int ipv4 set dynamicport udp start=10000 num=1000
netsh int ipv6 set dynamicport tcp start=10000 num=1000
netsh int ipv4 set dynamicport udp start=10000 num=1000

 

4.3   后續解決方案建議

  • 定時重啟操作系統避免運行時間超過497天。
  • 安裝對應的BUG修復補丁。

參考連接:從系統啟動,Windows Vista 中、 在 Windows 7 中,Windows Server 2008 中和在 Windows Server 2008 R2 中的 497 天后未關閉 TIME_WAIT 狀態的所有 TCP/IP 端口 (microsoft.com)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM