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

調大 MySQL 最大連接數 max_connections:修改 safe_mysqld 啟動腳本實測

     編輯:MySQL 資料庫相關知識

預設值與症狀

  • 預設 max_connections = 100
  • 高併發報錯:ERROR 1040: Too many connections

修改方法 (Linux/Unix)

  1. 定位腳本:whereis safe_mysqld
  2. 編輯 safe_mysqld,找到 mysqld 啟動行 (兩處:無參數與帶參數)
  3. 在啟動參數後追加:-O max_connections=1000

修改差異示例

--- safe_mysqld.orig
+++ safe_mysqld
@@ -109,10 +109,10 @@
 if test "$#" -eq 0
 then
   nohup $ledir/mysqld --basedir=$MY_BASEDIR_VERSION --datadir=$DATADIR \
-    --skip-locking >> $err_log 2>&1
+    --skip-locking -O max_connections=1000 >> $err_log 2>&1
 else
   nohup $ledir/mysqld --basedir=$MY_BASEDIR_VERSION --datadir=$DATADIR \
-    --skip-locking "$@" >> $err_log 2>&1
+    --skip-locking "$@" -O max_connections=1000 >> $err_log 2>&1
 fi

驗證生效

mysqladmin -u root -p variables | grep max_connections
# 輸出: max_connections 1000

現代做法 (MySQL 4.1+ / 5.0+)

直接在 my.cnf [mysqld] 區段設定:

[mysqld]
max_connections = 1000
# 相關參數同步調大
max_user_connections = 800
wait_timeout = 300
interactive_timeout = 300

修改後 service mysql restart 即可,無需動啟動腳本。

容量規劃建議

  • 每連線約 256KB~2MB 記憶體 (視 sort_join_buffer 等)
  • 1000 連線需 256MB~2GB 額外記憶體
  • 配合連線池 (如 DBCP、c3p0、HikariCP) 限制應用端連線數
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved