【問題記錄】:
mysql: error 1040: too many connections
【解決辦法】:
1.檢視mysql的最大連線數:
mysql> show variables like '%max_connections%'; //500
2.檢視伺服器響應的最大連線數:
mysql> show global status like 'max_used_connections'; //501
3.設定這個最大連線數值:
// 方法一:
mysql> set global max_connections=256;
//方法二:永久更改
vi /etc/my.cnf
max_connections = 512
//方法三:非使用mysqld指令碼自動啟動的使用者。
修改$mysql_home/bin/mysqld_safe檔案
例如:/usr/local/mysql/bin/mysqld_safe這個檔案
grep -n 『max_connection』 $mysql_home/bin/mysqld_safe
修改對應行號的max_connections引數值
說明:對於mysql伺服器最大連線數值的設定範圍比較理想的是:
伺服器響應的最大連線數值佔伺服器上限連線數值的比例值在10%以上,如果在10%以下,說明mysql伺服器最大連線上限值設定過高。
設定最大max_connections值沒有硬性限制。因此,您必須根據工作量,與mysql伺服器的同時連線數等來明智地選擇max_connections。通常,建議不要將max_connections值設定得太高,因為在某些鎖定條件下或如果所有這些連線都執行得很大,則會降低速度競爭問題可能會出現。
在使用臨時/記憶體表進行活動連線的情況下,記憶體使用率可能會更高。在具有較小ram或在應用程式端具有大量連線控制的系統上,我們可以使用較小的max_connections值,例如100-300。具有16g ram或更高的max_connections = 1000的系統是個好主意,每個連線緩衝區應具有良好/預設值,而在某些系統上,我們可以看到最多8k個最大連線,但是在負載峰值的情況下,此類系統通常會崩潰。
4.伺服器等待時間
mysql> show global variables like 'wait_timeout'; //28800
5.設定等待時間
mysql> set global wait_timeout=10;
6.所有連線到這個伺服器上的mysql連線
mysql> show processlist;
7.殺掉程序
mysql> kill 1180421;
8.檢視當前資料庫的所有使用者:
select user,host,password from mysql.user;
9.業務**處理gorm-psql
// 關閉鏈結
db.db().close()
// 全域性共享鏈結的話,設定乙個最大開啟鏈結數
db.db().setmaxopenconns(10)
// 開啟db
db, err = gorm.open("postgres", conncfg)
// 設定最大連線數
db.db().setconnmaxlifetime(5 * time.second)
db.db().setmaxopenconns(10)
db.db().setmaxidleconns(10)
相關鏈結
設定Mysql連線數
mysql資料庫連線數過多導致系統出錯,系統不能連線資料庫,關鍵要看兩個資料 1 資料庫系統允許的最大可連線數max connections。這個引數是可以設定的。如果不設定,預設是100。最大是16384。2 資料庫當前的連線線程數threads connected。這是動態變化的。檢視max c...
mysql錯誤連線數
昨天除錯程式的時候,總是提示host server ip 不能被解析,具體錯誤資訊忘記了,查了一下,說是mysql連線數設定小了。max connect error的數字一般都是10,改為1000就好了。set global max connections 1000 命令 show processl...
mysql優化 連線數
有時候我們會遇見 mysql error 1040 too many connections 的異常,一種原因是訪問量過高,mysqlserver抗不住,這個時候就要考慮新增從server分散讀壓力,還有一種原因就是mysql配置檔案裡max connections值過小。首先,我們來檢視mysql...