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

Discuz! 報錯「Can't connect to MySQL server on 'localhost' (10061)」:連接數耗盡與服務異常排查指南

     編輯:MySQL 資料庫相關知識

錯誤現象


Discuz! info: Can not connect to MySQL Server
Error: Can't connect to MySQL server on 'localhost' (10061)
Errno: 2003

常見原因

  1. 最大連接數耗盡:訪問量過大,超過 max_connections,新連接被拒。
  2. MySQL 服務意外停止:崩潰、OOM Killer、磁盤滿導致進程退出。
  3. 防火牆/端口阻斷:3306 未放行或安全組策略變更。
  4. Socket 文件異常:localhost 走 Unix Socket,文件丟失/權限錯誤。

Windows 環境快速修復

1. 重啟 MySQL 服務


services.msc → MySQL → 重新啟動
# 或命令行
net stop mysql
net start mysql

2. 擴大最大連接數

  1. 編輯 my.ini(通常在 MySQL 安裝目錄或 C:\ProgramData\MySQL\MySQL Server x.y\)。
  2. 修改/添加:
    max_connections=1000
  3. 重啟 MySQL 服務生效。

3. 同步重啟 IIS / PHP-FPM

釋放殘留連接,避免應用層連接池持有失效句柄。

深度排查與預防

  • 監控連接數:SHOW STATUS LIKE 'Threads_connected'; 納入監控告警(> 80% 告警)。
  • 慢查詢導致連接堆積:開啟慢查詢日誌,優化 SQL 減少佔用時間。
  • 應用層連接池配置:最大連接數 < MySQL max_connections,設置獲取超時、空閒回收。
  • 錯誤日誌分析:.err 文件查看崩潰堆棧、OOM、磁盤錯誤。
  • 避免 localhost:改用 127.0.0.1 走 TCP,繞過 Socket 問題(參考文章 90339)。

Linux 環境對應操作


systemctl restart mysqld
# my.cnf 調整 max_connections
# ulimit -n 65535 確保文件描述符足夠
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved