查看mysql數據庫鏈接數、併發數相關信息:mysql
1.show status like 'Threads%';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Threads_cached | 58 |
| Threads_connected | 57 | ###這個數值指的是打開的鏈接數
| Threads_created | 3676 |
| Threads_running | 4 | ###這個數值指的是激活的鏈接數,這個數值通常遠低於connected數值
+-------------------+-------+
Threads_connected 跟show processlist結果相同,表示當前鏈接數。準確的來講,Threads_running是表明當前併發數sql
2.show variables like '%max_connections%';###這是是查詢數據庫當前設置的最大鏈接數
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 1000 |
+-----------------+-------+
能夠在my.ini裏面設置數據庫的最大鏈接數
max_connections 參數能夠用於控制數據庫的最大鏈接數數據庫
3.show variables like '%connect%';
+--------------------------+-------------------+
| Variable_name | Value |
+--------------------------+-------------------+
| character_set_connection | latin1 |
| collation_connection | latin1_swedish_ci |
| connect_timeout | 10 |
| init_connect | |
| max_connect_errors | 10 |
| max_connections | 4000 |
| max_user_connections | 0 |
+--------------------------+-------------------+服務器
不少開發人員都會碰見」MySQL: ERROR 1040: Too many connections」的異常狀況,形成這種狀況的一種緣由是訪問量太高,MySQL服務器抗不住,這個時候就要考慮增長從服務器分散讀壓力;另外一種緣由就是MySQL配置文件中max_connections值太小。併發
首先,咱們來查看mysql的最大鏈接數:ssl
show variables like '%max_connections%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 151 |
+-----------------+-------+
1 row in set (0.00 sec)
mysql> show variables like '%max_connections%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 151 |
+-----------------+-------+
1 row in set (0.00 sec)ci
其次,查看服務器響應的最大鏈接數:
show global status like 'Max_used_connections';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| Max_used_connections | 2 |
+----------------------+-------+
1 row in set (0.00 sec)開發
能夠看到服務器響應的最大鏈接數爲2,遠遠低於mysql服務器容許的最大鏈接數值。
對於mysql服務器最大鏈接數值的設置範圍比較理想的是:服務器響應的最大鏈接數值佔服務器上限鏈接數值的比例值在10%以上,若是在10%如下,說明mysql服務器最大鏈接上限值設置太高。
Max_used_connections / max_connections * 100% = 2/151 *100% ≈ 1% 咱們能夠看到佔比遠低於10%it
上面咱們知道怎麼查看mysql服務器的最大鏈接數值,而且知道了如何判斷該值是否合理,下面咱們就來介紹一下如何設置這個最大鏈接數值。
set GLOBAL max_connections=256;
show variables like '%max_connections%';
修改mysql配置文件my.ini,在[mysqld]段中添加或修改max_connections值:
max_connections=128
重啓mysql服務便可。io
4.當超過最大max_user_connections,會提示max_user_connections限制數時會提示 User big already has more than 'max_user_connections
當超過max_connections,會提示too many connection
調整max_connections和max_user_connections值
max_connections #整個mysql服務器的最大鏈接數,若是服務器的併發鏈接請求量比較大,建議調高此值
max_user_connections #每一個數據庫用戶的最大鏈接,注意是以用戶+主機爲單位
interactive_timeout=60 #服務器關閉交互式鏈接前等待活動的秒數
wait_timeout=60 #服務器關閉非交互鏈接以前等待活動的秒數
注意: 一、響應鏈接數占上限鏈接數的85%左右,若是發現比例在10%如下,mysql服務器鏈接上線就設置得太高了 Max_used_connections / max_connections * 100% ≈ 85% 二、鏈接數據庫不要用root賬號,且只有root有super權限,省得鏈接數過多root賬號都登陸不了