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

MySQL 最大連接數修改兩大方式與容量規劃指南

     編輯:MySQL 綜合教學

問題背景

報錯 ERROR 1040 (HY000): Too many connections 表示當前活躍連接數達到 max_connections 上限。默認值 151(5.7+),理論最大 16384。

方式一:運行時動態調整(即時生效,重啟失效)

# /etc/my.cnf
[mysqld]
max_connections = 500
組件典型佔用
系統預留1-2 GB
innodb_buffer_pool_size物理內存 60-75%
query_cache_size建議 0(5.7 廢棄)
線程棧 (thread_stack)256 KB(默認)
排序/連接緩存sort_buffer_size + join_buffer_size × 連接數


示例:16 GB 內存服務器

[mysqld]
max_connections = 2000
# 文件句柄限制(OS 層面)
open_files_limit = 65535

# 連接緩存
thread_cache_size = 200        # 緩存空閒線程,減少創建銷毀開銷
back_log = 200                 # TCP 接收隊列,突發連接緩衝

# 避免單連接佔用過多內存
sort_buffer_size = 2M
join_buffer_size = 2M
read_rnd_buffer_size = 2M

# 監控指標
# show global status like 'Threads_connected';
# show global status like 'Max_used_connections';
# show global status like 'Connection_errors_max_connections';

最佳實踐總結

  1. 監控先行:Grafana 告警 Max_used_connections / max_connections > 80%
  2. 連接池:應用層必須配置連接池(HikariCP/Druid),避免頻繁建連
  3. 超時回收:wait_timeout=28800、interactive_timeout=28800 釋放空閒連接
  4. 分級限流:ProxySQL/MaxScale 實現租戶級連接數配額
  5. 壓測驗證:sysbench --threads=2000 --time=300 oltp_read_write run 驗證穩定性
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved