Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

Windows Server 2003 TCP 連接埠耗盡 (WSAENOBUFS 10055) 根因與註冊表修復

編輯:關於伺服器

現象:Windows Server 2003 伺服器運行一段時間後,IE 無法開網頁、FTP 指令 `BIND` 失敗、Serv-U 啟動報「資源不足」。事件日誌無明顯錯誤,但網路連線極其不穩定。

根因分析:臨時連接埠耗盡

  • Windows TCP/IP 協議棧為外連連線動態分配**臨時連接埠 (Ephemeral Ports)**,預設範圍 **1024-5000** (共 3977 個)
  • 高併發/長連接/連線洩漏 (應用未正確 `close()`/`Disconnect()`) 導致大量連線處於 `TIME_WAIT` (預設 240 秒) / `FIN_WAIT_2` 狀態
  • 臨時埠池耗盡,新連線無可用來源埠 → `WSAENOBUFS (10055)`「缺乏緩衝區空間或佇列已滿」
  • 經典場景:Web 伺服器/代理/資料庫連線池/防毒掃描/備份代理 大量外連

註冊表修復:擴展臨時連接埠範圍至最大值

路徑: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
值名: MaxUserPort
類型: REG_DWORD
值: 65534 (十進制) / 0xFFFE (十六進制)
有效範圍: 5000 - 65534
預設: 5000 (0x1388)

操作步驟

  1. 執行 `regedit` 開啟註冊表編輯器
  2. 定位至上述路徑
  3. 右鍵空白處 → 新增 → DWORD (32 位元) 值 → 命名 `MaxUserPort`
  4. 雙擊修改數值資料:`65534` (選擇十進制)
  5. 確定、關閉註冊表編輯器
  6. 重新開機生效

協同優化參數 (同一註冊表路徑)

應用層根治 (比註冊表更根本)

  1. 連線池配置: 資料庫/HTTP/Redis/MQ 連線池設定 `maxIdle`/`maxActive`/`maxWait`、`evictionRunInterval`/`minEvictableIdleTimeMillis`,嚴格回收閒置連線
  2. 啟用 Keep-Alive / 連線重用: HTTP 1.1 Keep-Alive、資料庫持久連線、減少頻繁建立/銷毀連線開銷
  3. 修正連線洩漏: 程式碼審查 `try-with-resources` / `using` / `finally { close() }` 確保 100% 回收
  4. 監控指標: `netstat -an | find /c "TIME_WAIT"`、`perfmon` → `TCPv4` → `Connections Established/Reset/Active/Passive`、應用層連線池指標
  5. 負載均衡器/防火牆超時: 確認中間設備空閒超時 ≥ 應用層 Keep-Alive 間隔,避免中間斷開導致半開連線堆積

驗證修復

# 重開機後
netstat -an | find /c "TIME_WAIT"  # 應大幅下降
# 壓測驗證
ab -n 10000 -c 500 https://server/  # 應無 10055 錯誤

結語

`MaxUserPort=65534` 是**緩兵之計**,賴以爭取時間進行**應用層連線池優化、洩漏修復、Keep-Alive 啟用**。單純擴大埠範圍若不解決根因,最終仍會在更高併發下耗盡 65535 個埠 (理論上限)。註冊表調優 + 應用層根治 + 持續監控,才是徹底之道。

Copyright © Windows教程網 All Rights Reserved
參數建議值說明
TcpTimedWaitDelay30 (十進制, 秒)縮短 TIME_WAIT 等待時間 (預設 240 秒),加速埠釋放。注意: 過低可能導致舊封包干擾新連線,建議 30-60 秒
MaxFreeTcbs / MaxHashTableSize視記憶體調大增加 TCP 控制區塊 (TCB) 快取上限,支援更多並發連線
SynAttackProtect2啟用 SYN 洪水攻擊保護 (預設 1/2,視版本)