mysql的max_connections和Too many connections

stpeace發表於2018-01-05

      mysql中,max_connections表示最大連線數目, 可以修改(set GLOBAL max_connections = 3; 僅對mysql當前服務程式有效,如果mysql服務重啟,則失效)。 我修改為3了, 如下:

mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 3     |
+-----------------+-------+
1 row in set (0.01 sec)

      可以, 我發現, 實際上可以連線4個, 如下:

mysql> show status like 'Threads%';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| Threads_cached    | 0     |
| Threads_connected | 4     |
| Threads_created   | 4     |
| Threads_running   | 1     |
+-------------------+-------+
4 rows in set (0.00 sec)

mysql> 

       這是什麼原因呢?MySQL會保留一個用於管理員(SUPER)登陸的連線,用於管理員連線資料庫進行維護操作,即使當前連線數已經達到了max_connections。因此最大可連線數為max_connections+1, 所以可以有4個連線。繼續增加連線, 會怎樣呢?

ubuntu@VM-0-15-ubuntu:~$ sudo mysql -u root
ERROR 1040 (HY000): Too many connections
ubuntu@VM-0-15-ubuntu:~$ 

      恩, 符合預期。

 

 


 

相關文章