很多開發人員都會遇見」mysql: error 1040: too many connections」的異常情況,造成這種情況的一種原因是訪問量過高,mysql伺服器抗不住,這個時候就要考慮增加從伺服器分散讀壓力;另一種原因就是mysql配置檔案中max_connections值過小。
首先,我們來檢視mysql的最大連線數:
?
1
2
3
4
5
6
7
mysql> show variables
like
'%max_connections%'
;
+
-----------------+-------+
| variable_name | value |
+
-----------------+-------+
| max_connections | 151 |
+
-----------------+-------+
1 row
in
set
(0.00 sec)
其次,檢視伺服器響應的最大連線數:
?
1
2
3
4
5
6
7
mysql> 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伺服器最大連線上限值設定過高。
?
1
max_used_connections / max_connections * 100% = 2/151 *100% ≈ 1%
我們可以看到佔比遠低於10%(因為這是本地測試伺服器,結果值沒有太大的參考意義,大家可以根據實際情況設定連線數的上限值)。
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
mysql> show variables
like
'%max_connections%'
;
+
-----------------+-------+
| variable_name | value |
+
-----------------+-------+
| max_connections | 151 |
+
-----------------+-------+
1 row
in
set
(0.19 sec)
mysql> show
global
status
like
'max_used_connections'
;
+
----------------------+-------+
| variable_name | value |
+
----------------------+-------+
| max_used_connections | 44 |
+
----------------------+-------+
1 row
in
set
(0.17 sec)
這裡的最大連線數佔上限連線數的30%左右。
上面我們知道怎麼檢視mysql伺服器的最大連線數值,並且知道了如何判斷該值是否合理,下面我們就來介紹一下如何設定這個最大連線數值。
方法1:
?
1
2
3
4
5
6
7
8
9
mysql>
set
global
max_connections=256;
query ok, 0
rows
affected (0.00 sec)
mysql> show variables
like
'%max_connections%'
;
+
-----------------+-------+
| variable_name | value |
+
-----------------+-------+
| max_connections | 256 |
+
-----------------+-------+
1 row
in
set
(0.00 sec)
方法2:
修改mysql配置檔案my.cnf,在[mysqld]段中新增或修改max_connections值:
max_connections=128
重啟mysql服務即可。
優化mysql連線數訪問量
如果mysql 出現mysql error 1040 too many connections有兩種原因,第一種表明訪問量過高,mysql伺服器扛不住了,就要考慮新增伺服器分擔壓力,第二種有可能就是mysql配置檔案max connections這個值太小 我在我的mysql查詢 如果你查詢的結果伺...
mysql優化連線數防止訪問量過高的方法
很多開發人員都會遇見 mysql error 1040 too many connections 的異常情況,造成這種情況的一種原因是訪問量過高,mysql伺服器抗不住,這個時候就要考慮增加從伺服器分散讀壓力 另一種原因就是mysql配置檔案中max connections值過小。首先,我們來檢視m...
mysql優化連線數防止訪問量過高的方法
很多開發人員都會遇見 mysql error 1040 too many connections 的異常情況,造成這種情況的一種原因是訪問量過高,mysql伺服器抗不住,這個時候就要考慮增加從伺服器分散讀壓力 另一種原因就是mysql配置檔案中max connections值過小。首先,我們來檢視m...