mysql優化銜接數避免拜訪量太高的辦法。本站提示廣大學習愛好者:(mysql優化銜接數避免拜訪量太高的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是mysql優化銜接數避免拜訪量太高的辦法正文
許多開辟人員都邑碰見”MySQL: ERROR 1040: Too many connections”的異常情形,形成這類情形的一種緣由是拜訪量太高,MySQL辦事器抗不住,這個時刻就要斟酌增長從辦事器疏散讀壓力;另一種緣由就是MySQL設置裝備擺設文件中max_connections值太小。
起首,我們來檢查mysql的最年夜銜接數:
mysql> show variables like '%max_connections%'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | max_connections | 151 | +-----------------+-------+ 1 row in set (0.00 sec)
其次,檢查辦事器呼應的最年夜銜接數:
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辦事器最年夜銜接下限值設置太高。
Max_used_connections / max_connections * 100% = 2/151 *100% ≈ 1%
我們可以看到占比遠低於10%(由於這是當地測試辦事器,成果值沒有太年夜的參考意義,年夜家可以依據現實情形設置銜接數的下限值)。
再來看一下本身 linode VPS 如今(時光:2013-11-13 23:40:11)的成果值:
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:
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辦事便可。