故障背景
Windows Server 2003 安裝 KB967723 更新後,MySQL 服務重啟出現 Can't connect to MySQL server on 'localhost' (10061)。原因是該補丁修改了 TCP/IP 協議棧,限制了臨時端口範圍,導致高併發下端口耗盡。
現象確認
- 服務器非每日重啟,補丁安裝後首次重啟觸發
- 錯誤碼 10061 =
WSAECONNREFUSED(連接被拒絕)
- 本地回環連接失敗,遠程同樣失敗
方案一:卸載補丁(快速止血)
- 控制面板 → 添加/刪除程序 → 勾選「顯示更新」
- 找到 KB967723 → 卸載
- 重啟服務器
風險:可能影響其他依賴該補丁安全修復的服務。
方案二:注冊表擴大臨時端口範圍(推薦,微軟官方方案)
操作步驟
Win+R → regedit
- 定位:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
- 右鍵新建 → DWORD (32位) 值 → 名稱:
MaxUserPort
- 數值數據:
65534(十進制)
- 重啟服務器生效
參數詳解
| 參數 | 默認值 | 推薦值 | 說明 |
| MaxUserPort | 5000 (0x1388) | 65534 | 用戶可用臨時端口上限 |
| TcpTimedWaitDelay | 240 秒 | 30-60 | TIME_WAIT 狀態保持時間,配合降低可加速端口復用 |
原理深度
- KB967723 修復 TCP/IP 漏洞,副作用收緊臨時端口分配
- MySQL 高併發短連接場景下,客戶端端口快速耗盡
- 擴大至 65534 幾乎用盡用戶端口空間(1024-65535),消除瓶頸
驗證方法
netstat -an | findstr TIME_WAIT
# 觀察 TIME_WAIT 連接數是否大幅下降
mysql -h localhost -u root -p
# 應正常連接
適用範圍
- Windows Server 2003 / XP / 2000(主流受影響版本)
- SQL Server、IIS、其他高併發 TCP 服務同樣受益
copyright ©
萬盛學電腦網 all rights reserved