mysql優(yōu)化連接數(shù)防止訪問(wèn)量過(guò)高的方法
很多開發(fā)人員都會(huì)遇見”MySQL: ERROR 1040: Too many connections”的異常情況,造成這種情況的一種原因是訪問(wèn)量過(guò)高,MySQL服務(wù)器抗不住,這個(gè)時(shí)候就要考慮增加從服務(wù)器分散讀壓力;另一種原因就是MySQL配置文件中max_connections值過(guò)小。
首先,我們來(lái)查看mysql的最大連接數(shù):
mysql> show variables like '%max_connections%'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | max_connections | 151 | +-----------------+-------+ 1 row in set (0.00 sec)
其次,查看服務(wù)器響應(yīng)的最大連接數(shù):
mysql> show global status like 'Max_used_connections'; +----------------------+-------+ | Variable_name | Value | +----------------------+-------+ | Max_used_connections | 2 | +----------------------+-------+ 1 row in set (0.00 sec)
可以看到服務(wù)器響應(yīng)的最大連接數(shù)為2,遠(yuǎn)遠(yuǎn)低于mysql服務(wù)器允許的最大連接數(shù)值。
對(duì)于mysql服務(wù)器最大連接數(shù)值的設(shè)置范圍比較理想的是:服務(wù)器響應(yīng)的最大連接數(shù)值占服務(wù)器上限連接數(shù)值的比例值在10%以上,如果在10%以下,說(shuō)明mysql服務(wù)器最大連接上限值設(shè)置過(guò)高。
Max_used_connections / max_connections * 100% = 2/151 *100% ≈ 1%
我們可以看到占比遠(yuǎn)低于10%(因?yàn)檫@是本地測(cè)試服務(wù)器,結(jié)果值沒(méi)有太大的參考意義,大家可以根據(jù)實(shí)際情況設(shè)置連接數(shù)的上限值)。
再來(lái)看一下自己 linode VPS 現(xiàn)在(時(shí)間:2013-11-13 23:40:11)的結(jié)果值:
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)
這里的最大連接數(shù)占上限連接數(shù)的30%左右。
上面我們知道怎么查看mysql服務(wù)器的最大連接數(shù)值,并且知道了如何判斷該值是否合理,下面我們就來(lái)介紹一下如何設(shè)置這個(gè)最大連接數(shù)值。
方法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服務(wù)即可。
- MySQL優(yōu)化必須調(diào)整的10項(xiàng)配置
- mysql優(yōu)化配置參數(shù)
- mysql優(yōu)化limit查詢語(yǔ)句的5個(gè)方法
- MySQL優(yōu)化GROUP BY方案
- MySQL優(yōu)化總結(jié)-查詢總條數(shù)
- MySQL優(yōu)化常用的19種有效方法(推薦!)
- MySQL優(yōu)化全攻略-相關(guān)數(shù)據(jù)庫(kù)命令
- MySQL優(yōu)化配置文件my.ini(discuz論壇)
- 21條MySQL優(yōu)化建議(經(jīng)驗(yàn)總結(jié))
- MySQL數(shù)據(jù)庫(kù)配置優(yōu)化的方案
相關(guān)文章
Mysql優(yōu)化技巧之Limit查詢的優(yōu)化分析
這篇文章主要給大家介紹了關(guān)于Mysql優(yōu)化技巧之Limit查詢的優(yōu)化分析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07mysql下為數(shù)據(jù)庫(kù)設(shè)置交叉權(quán)限的方法
由于 SupeSite 需要調(diào)用 Discuz! 和 UCHome 的數(shù)據(jù),所以如果它們不安裝在同一個(gè)數(shù)據(jù)庫(kù),SupeSite 的數(shù)據(jù)庫(kù)用戶必須要對(duì) Discuz! 和 UCHome 的數(shù)據(jù)庫(kù)有讀取、修改、刪除等權(quán)限。2011-07-07解析mysql中如何獲得數(shù)據(jù)庫(kù)的大小
本篇文章是對(duì)mysql中如何獲得數(shù)據(jù)庫(kù)的大小的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06