首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Windows 下 MySQL「Can't connect ... (10048)」錯誤:TcpTimedWaitDelay 註冊表優化修復

     編輯:MySQL 資料庫相關知識

錯誤現象


Can't connect to MySQL server on localhost (10048)

Windows 專有錯誤,高併發短連接場景頻發。

根因

TCP 連接關閉後進入 TIME_WAIT 狀態,默認持續 240 秒(4 分鐘)。短連接爆發時端口耗盡,新連接無可用端口,報 WSAEADDRINUSE (10048)。

修復方案:調整註冊表 TcpTimedWaitDelay

  1. 打開註冊表編輯器 regedit。
  2. 定位路徑:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  3. 查找 TcpTimedWaitDelay(DWORD 類型),不存在則新建 DWORD (32-bit) Value 命名為 TcpTimedWaitDelay。
  4. 修改數值為 30 ~ 60(十進制),單位秒。建議 30。
  5. 重啟操作系統生效。

輔助優化建議

  • 連接池復用:應用層使用連接池(如 HikariCP、DBCP、PHP mysqli 持久連接),減少短連接建立/銷毀。
  • MySQL 配置:wait_timeout、interactive_timeout 適當縮短(如 30-60s),配合 max_connections 提升。
  • 長連接+心跳:避免頻繁握手,應用層定期 SELECT 1 保活。
  • Linux 同類參數:/proc/sys/net/ipv4/tcp_tw_reuse=1、tcp_tw_recycle=1(內核 4.12+ 已移除,改用 tcp_tw_reuse)。

驗證方法


netstat -an | findstr TIME_WAIT
# 調整前數千條,調整後大幅減少
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved