服務器上多個 Discuz 論壇同時報 (1040) Not Connect,官方提示 Too many connections,但實際業務量極低,netstat -an | findstr :3306 顯示連接數遠未達上限。經排查,罪魁禍首是微軟補丁 KB967723 修改了 TCP/IP 動態端口分配行為,導致 MySQL 短連接場景下客戶端臨時端口耗盡。
KB967723 限制了用戶態動態端口範圍 (預設 5000-65534),並在高併發短連接下加速端口耗盡與 TIME_WAIT 堆積,使新連接無法建立,MySQL 回報 Can't connect to MySQL server (1040)。
regedit,定位:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\ParametersMaxUserPort65534 (十進制,最大值)TcpTimedWaitDelay = 30 (十進制,秒),縮短 TIME_WAIT 佔用時間 (預設 240s)。重啟後,Discuz 前後台訪問恢復正常,netstat 觀察端口佔用平穩,錯誤日志不再出現 1040。
wait_timeout = 60 (縮短空閒連接保持)max_connections = 1000 (視記憶體調大)注意:修改註冊表影響全系統 TCP 行為,建議在維護窗口操作並做快照。若服務器同時跑其他對端口敏感的舊應用,變更前請充分測試。