查看mysql數據庫鏈接數、併發數相關信息

查看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賬號都登陸不了

相關文章
相關標籤/搜索