mysql如何實(shí)現(xiàn)最大連接數(shù)
數(shù)據(jù)庫(kù)連接數(shù)突然增大是什么原因?
可能是數(shù)據(jù)庫(kù)性能突然變慢,連接的客戶要很久才能得到響應(yīng),客戶以為是自己沒(méi)確認(rèn)到,于是客戶就不斷地連接,這樣會(huì)話就增加了,數(shù)據(jù)庫(kù)就更忙了,最后可能會(huì)掛了。
一、
? ? ?項(xiàng)目中可能會(huì)遇到MySQL: ERROR 1040: Too many connections”的異常情況;Why:造成這種情況的一種原因是訪問(wèn)量過(guò)高,MySQL服務(wù)器抗不住,這個(gè)時(shí)候就要考慮增加從服務(wù)器分散讀壓力;另一種原因就是MySQL配置文件中max_connections值過(guò)小。
二、知識(shí)點(diǎn)
? ? ?Mysql的max_connections參數(shù)用來(lái)設(shè)置最大連接(用戶)數(shù)。每個(gè)連接MYSQL的用戶均算作一個(gè)連接,max_connections的默認(rèn)值不同版本略有區(qū)別。
Mysql5.5?mysql5.6 ?mysql5.7:默認(rèn)的最大連接數(shù)都是151,上限為:100000

Mysql5.1根據(jù)其小版本的不同,默認(rèn)的最大連接數(shù)和可修改的連接數(shù)上限也有所不同

Mysql5.0版本:默認(rèn)的最大連接數(shù)為100,上限為16384

? ? ?吐槽一下mysql版本的命名,從5.7一下跳到8.0版本。Mysql5.5?mysql5.6 ?mysql5.7:默認(rèn)的最大連接數(shù)都是151。這個(gè)數(shù)值對(duì)于并發(fā)連接很多的數(shù)據(jù)庫(kù)應(yīng)用是遠(yuǎn)不夠用的。當(dāng)連接請(qǐng)求大于默認(rèn)連接數(shù)后,就會(huì)出現(xiàn)無(wú)法連接數(shù)據(jù)庫(kù)的錯(cuò)誤,因此我們需要把它適當(dāng)調(diào)大一些。在使用 MySQL 數(shù)據(jù)庫(kù)的時(shí)候,經(jīng)常會(huì)遇到一個(gè)問(wèn)題,就是”Can not connect to MySQL server. Too many connections” -mysql 1040 錯(cuò)誤,這是因?yàn)樵L問(wèn)MySQL且還未釋放的連接數(shù)已經(jīng)達(dá)到 MySQL 的上限。MySQL無(wú)論如何都會(huì)保留一個(gè)用于管理員(SUPER)登陸的連接,用于管理員連接數(shù)據(jù)庫(kù)進(jìn)行維護(hù)操作,即使當(dāng)前連接數(shù)已經(jīng)達(dá)到了max_connections。因此MySQL的實(shí)際最大可連接數(shù)為max_connections+1;增加max_connections參數(shù)的值,不會(huì)占用太多系統(tǒng)資源。系統(tǒng)資源(CPU、內(nèi)存)的占用主要取決于查詢的密度、效率等;該參數(shù)設(shè)置過(guò)小的最明顯特征是出現(xiàn)”Too many connections”錯(cuò)誤;
三、實(shí)操
1、查看最大連接數(shù)
Mysql5.5?mysql5.6 ?mysql5.7:默認(rèn)的最大連接數(shù)都是151,上限為:100000
mysql> show variables like "%max_connections%";
±----------------±------+
| Variable_name | Value|
±----------------±------+
| max_connections| 151 |
±----------------±------+
1 row in set (0.00 sec)
2、查看服務(wù)器響應(yīng)的最大連接數(shù)
mysql> show global status like 'Max_used_connections'; +----------------------+-------+ | Variable_name | Value | +----------------------+-------+ | Max_used_connections | 11 | +----------------------+-------+ 1 row in set (0.00 sec)
可以看到服務(wù)器響應(yīng)的最大連接數(shù)為11,遠(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ò)高。
3、修改最大連接數(shù)
常用的修改最大連接數(shù)的兩種方式如下:
第一種:命令行修改最大連接數(shù)(max_connections),設(shè)置最大連接數(shù)為1000。
mysql> set global max_connections = 1000;
這種方式有個(gè)問(wèn)題,就是設(shè)置的最大連接數(shù)只在 MySQL 當(dāng)前服務(wù)進(jìn)程有效,一旦MySQL重啟,又會(huì)恢復(fù)到初始狀態(tài)。因?yàn)镸ySQL啟動(dòng)后的初始化工作是從其配置文件中讀取數(shù)據(jù)的,而這種方式?jīng)]有對(duì)其配置文件做更改。
第二種:通過(guò)修改配置文件來(lái)修改MySQL最大連接數(shù)(max_connections)。
進(jìn)入MySQL安裝目錄,打開(kāi)MySQL配置文件 my.ini 或 my.cnf查找 max_connections=100,修改為max_connections=1000,重啟MySQL服務(wù)即可。
四、參考資料
1、https://www.yisu.com/zixun/38410.html
2、https://bbs.huaweicloud.com/blogs/147608
到此這篇關(guān)于mysql如何實(shí)現(xiàn)最大連接數(shù)的文章就介紹到這了,更多相關(guān)mysql 最大連接數(shù)內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信