首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 超時錯誤 10055/10048 系統級優化方案

     編輯:MySQL 綜合教學

MySQL 超時錯誤 10055/10048 系統級優化方案

Windows 環境下高併發訪問 MySQL 時,常遇到「10055: No buffer space available」或「10048: Address already in use」錯誤。根因在於 TCP/IP 協議棧的 TIME_WAIT 狀態堆積與動態端口耗盡。本文提供註冊表與端口範圍雙重優化方案。

一、縮短 TIME_WAIT 等待時間

預設 TcpTimedWaitDelay 為 240 秒(4 分鐘),高併發下大量連接滯留在 TIME_WAIT,耗盡端口資源。

  1. 打開註冊表編輯器:regedit
  2. 定位:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  3. 若無 TcpTimedWaitDelay,新建 DWORD (32-bit) 值,命名為 TcpTimedWaitDelay
  4. 設值為 30(十進制),單位秒,即縮短至 30 秒
  5. 重啟電腦生效

二、擴大動態端口範圍

預設動態端口 49152–65535(約 1.6 萬),高併發極易耗盡。擴展至 10000–59999(5 萬端口)。

以管理員身份執行 CMD,依次執行:

netsh int ipv4 set dynamicport tcp start=10000 num=50000
netsh int ipv4 set dynamicport udp start=10000 num=50000
netsh int ipv6 set dynamicport tcp start=10000 num=50000
netsh int ipv6 set dynamicport udp start=10000 num=50000

三、一鍵批處理腳本

保存為 fix_tcp_timeout.bat,右鍵「以管理員身份執行」:

@echo off & setlocal enabledelayedexpansion
echo TcpTimedWaitDelay 30
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters" /v "TcpTimedWaitDelay" /t REG_DWORD /d 30 /f
echo ipv4 tcp
netsh int ipv4 set dynamicport tcp start=10000 num=50000
echo ipv4 udp
netsh int ipv4 set dynamicport udp start=10000 num=50000
echo ipv6 tcp
netsh int ipv6 set dynamicport tcp start=10000 num=50000
echo ipv6 udp
netsh int ipv6 set dynamicport udp start=10000 num=50000
pause

四、驗證與補充

  • 重啟後執行 netstat -an | find "TIME_WAIT" 觀察數量下降
  • 應用層同步優化:連接池 maxActive、maxWait 合理設定,避免連接洩漏
  • MySQL 端 wait_timeout 配合調整,減少空閒連接佔用

系統級 + 應用級雙管齊下,徹底解決高併發下的端口耗盡與超時問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved