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

MySQL 連線數監控與 max_connections 調優完整指南

     編輯:MySQL 資料庫相關知識

MySQL 預設 max_connections=151 (8.0) 或 100 (舊版),高併發場景極易觸發 Too many connections 錯誤。本文提供查看當前連線、狀態監控、動態/永久調大上限、連線池配合等完整操作指南。

一、即時查看連線狀態

1. 命令列工具

# 詳細進程列表 (含 SQL、執行時間、狀態)
mysqladmin -u root -p -h 10.140.1.1 processlist

# 摘要狀態 (Threads_connected = 當前連線數)
mysqladmin -u root -p -h 10.140.1.1 status

2. SQL 介面 (資訊豐富)

SHOW PROCESSLIST;           -- 當前執行緒
SHOW FULL PROCESSLIST;      -- 顯示完整 SQL 文本
SELECT * FROM information_schema.PROCESSLIST; -- 可用 WHERE 過濾

3. 關鍵狀態變數

SHOW GLOBAL STATUS LIKE 'Threads_%';
/*
Threads_connected: 當前開啟連線數
Threads_running:   正在執行查詢的連線數
Threads_created:   歷史建立連線總數 (若快速增長說明連線池失效或頻繁重連)
Threads_cached:    執行緒緩存池中閒置執行緒數
*/

二、調整 max_connections

方法一:運行時動態生效 (重啟失效)

SET GLOBAL max_connections = 1000;
-- 或
SET PERSIST max_connections = 1000;  -- 8.0+ 寫入 mysqld-auto.cnf 永久生效

方法二:配置檔永久生效 (需重啟)

[mysqld]
max_connections = 2000
# 相關建議同步調大
thread_cache_size = 100          # 緩存執行緒減少建立銷毀開銷
open_files_limit = 65535         # 系統檔案描述符上限
table_open_cache = 4000          # 表緩存
back_log = 200                   -- 監聽隊列長度

系統層面同步調整 (Linux):/etc/security/limits.conf 加入 mysql soft nofile 65535 / mysql hard nofile 65535,/etc/sysctl.conf 加 net.core.somaxconn=65535,執行 sysctl -p。

三、連線數暴增常見原因與對策

原因徵兆解決
應用未使用連線池Threads_created 快速增長、大量 Sleep 連線啟用 HikariCP/DBCP/連線池,設定合理 pool size
連線未正確關閉大量 Sleep 狀態連線、佔用連線數程式碼使用 try-with-resources / using 區塊,檢查 finally 關閉
長時間交易/鎖等待Threads_running 高、查詢緩慢優化 SQL、縮短交易範圍、設定 innodb_lock_wait_timeout
慢查詢堆積同樣 SQL 大量並發開啟慢查詢日誌、加索引、讀寫分離
連線風暴 (突發流量)瞬間連線數飆升應用層限流、ProxySQL 連線多工、MaxScale

四、最佳實務建議

  1. 監控告警:Threads_connected / max_connections > 80% 觸發告警。
  2. 連線池上限:應用連線池總和 ≤ max_connections × 0.7,留 30% 給管理/備份/監控連線。
  3. 定期檢視:SHOW PROCESSLIST 找出長期 Sleep 或卡住查詢,配合 KILL id 清理。
  4. 唯讀實例分流:讀寫分離架構下,讀請求導向 Replica,降低 Primary 連線壓力。

五、原始碼修改編譯方式 (極少用,僅作參考)

修改 sql/mysqld.cc 中 {"max_connections", ..., 100, ...} 的預設值 (第 3 欄位),重新 ./configure && make && make install。**不建議生產環境使用**,維護成本極高。

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