mysql連接出錯:ERROR 1040 (HY000): Too many connections


1.查看mysql的最大連接數:show variables like '%max_connections%';

  2. 查看服務器響應的最大連接數:

3. 設置最大連接數: set GLOBAL max_connections=2256;   (這種設置,在mysql重啟后是失效的)

對於mysql服務器最大連接數值的設置范圍比較理想的是:服務器響應的最大連接數值占服務器上限連接數值的比例值在10%以上,如果在10%以下,說明mysql服務器最大連接上限值設置過高。連接數超過了 MySQL 設置的值,與 max_connections 和 wait_timeout 都有關系。wait_timeout 的值越大,連接的空閑等待就越長,這樣就會造成當前連接數越大。wait_timeout過大有弊端 默認值為28800(即8小時),其體現就是MySQL里大量的SLEEP進程無法及時釋放,拖累系統性能,不過也不能把這個指設置的過小,否則你可能會遭遇到“MySQL has gone away”之類的問題,通常來說,我覺得把wait_timeout設置為10是個不錯的選擇,但某些情況下可能也會出問題,比如說有一個CRON腳本,其中兩次SQL查詢的間隔時間大於10秒的話,那么這個設置就有問題了(當然,這也不是不能解決的問題,你可以在程序里時不時mysql_ping一下,以便服務器知道你還活着,重新計算wait_timeout時間)

4. show global variables like 'wait_timeout';

5. set global wait_timeout=10;
6.最大連接數也可以改配置文件

mac上是在/usr/local/mysql/support-files/my.cnf下,如若不知,可以where mysql查找安裝目錄

[mysqld]
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
port        = 3306
socket      = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 16K
max_allowed_packet = 50M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 128K
max_connections = 1000
max_user_connections = 1000 

7.手動去釋放一些沒用的連接。show processlist

 kill pid;(其中pid是進程列表里找到並且要殺掉的進程號)

8.too many connections時候無法登錄的問題,

為了防止發生too many connections時候無法登錄的問題,

mysql manual有如下的說明:

mysqld actually allows max_connections+1 clients to connect. The extra connection is reserved for use by accounts that have the SUPER privilege. By granting the SUPER privilege to administrators and not to normal users (who should not need it), an administrator can connect to the server and use SHOW PROCESSLIST to diagnose problems even if the maximum number of unprivileged clients are connected.

因此, 必須只賦予root用戶的SUPER權限,同時所有數據庫連接的帳戶不能賦予SUPER權限。前面說到的報錯后無法登錄就是由於我們的應用程序直接配置的root用戶

查看當前數據庫的所有用戶:

select user,host,password from mysql.user;

給用戶賦予super權限(super和ALL PRIVILEGES都可以):

GRANT super ON *.* TO 'mysql'@'localhost'


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM