激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫技術(shù)|

服務(wù)器之家 - 數(shù)據(jù)庫 - Mysql - 線上MySQL不可用,報錯數(shù)據(jù)庫無法連接

線上MySQL不可用,報錯數(shù)據(jù)庫無法連接

2022-02-20 21:19JavaEdge Mysql

當(dāng)MySQL告訴你Too many connections,就是在傳達(dá)它的連接池的連接已經(jīng)滿了,你這業(yè)務(wù)系統(tǒng)不能再和它建立新的連接。ERROR 1040(HY000): Too many connections:DB連接池里已有太多連接,不能再和你建立新連接。

ERROR 1040(HY000): Too many connections:DB連接池里已有太多連接,不能再和你建立新連接。

數(shù)據(jù)庫自己有個連接池,你的每個系統(tǒng)部署在機(jī)器時,那臺機(jī)器上部署的系統(tǒng)實(shí)例/服務(wù)實(shí)例自己也有個連接池,你的系統(tǒng)每個連接Socket都對應(yīng)DB連接池里的一個Socket連接,這就是TCP連接:

線上MySQL不可用,報錯數(shù)據(jù)庫無法連接

當(dāng)MySQL告訴你Too many connections,就是在傳達(dá)它的連接池的連接已經(jīng)滿了,你這業(yè)務(wù)系統(tǒng)不能再和它建立新的連接。

案例

DB部署在64G內(nèi)存大機(jī)器,而連接這臺物理機(jī)的Java業(yè)務(wù)系統(tǒng)部署在2臺機(jī)器,Java系統(tǒng)的連接池最大大小為200,即每個Java業(yè)務(wù)系統(tǒng)節(jié)點(diǎn),最多和MySQL建立200個連接,共最多建立400個連接。

但這時若MySQL報異常Too many Connections,說明目前MySQL無法建立400個網(wǎng)絡(luò)連接。這也太少了吧,這可是高配置機(jī)器!

于是檢查了my.cnf,有個關(guān)鍵參數(shù)是max_connections,即MySQL能建立的最大連接數(shù),設(shè)置的800。那為啥兩臺機(jī)器就只需建立400個連接都不行?

登錄到MySQL機(jī)器,執(zhí)行如下命令:

show variables like 'max_connections'

可觀察到,當(dāng)前MySQL僅建立了214個連接而已!難道MySQL根本不在乎我們設(shè)置的這參數(shù)?

檢查MySQL啟動日志:

Could not increase number of max_open_files to more than mysqld (request: 65535) Changed limits: max_connections: 214 (requested 2000) Changed limits: table_open_cache: 400 (requested 4096)

MySQL發(fā)現(xiàn)自己無法設(shè)置max_connections為我們期望的800,于是強(qiáng)制為214!因?yàn)榈讓觢inux把進(jìn)程可打開的文件句柄數(shù)限制為1024了,導(dǎo)致MySQL最大連接數(shù)是214!

Linux文件句柄數(shù)量被限制也會導(dǎo)致MySQL最大連接數(shù)被限制。

如何解決

核心就如下命令:

ulimit -HSn 65535

然后就能用如下命令,檢查最大文件句柄數(shù)是否被修改:

cat /etc/security/limits.conf cat /etc/rc.local

若都修改好之后,可在MySQL的my.cnf里確保max_connections參數(shù)也調(diào)整好了,然后重啟服務(wù)器、重啟MySQL,這樣linux的最大文件句柄就會生效,MySQL最大連接數(shù)也會生效了。

此時再嘗試業(yè)務(wù)系統(tǒng)去連接DB,就沒問題了。

為何Linux最大文件句柄限制為1024時,MySQL最大連接數(shù)是214?MySQL源碼中就是有個計算公式,算下來就是這樣的結(jié)果。

linux默認(rèn)會限制你每個進(jìn)程對機(jī)器資源的使用,包括:

  • 可打開的文件句柄的限制
  • 可打開的子進(jìn)程數(shù)的限制
  • 網(wǎng)絡(luò)緩存的限制
  • 最大可鎖定的內(nèi)存大小

因?yàn)閘inux os設(shè)計的初衷,就是要盡量避免你某個進(jìn)程一下子耗盡機(jī)器上的所有資源,所以他默認(rèn)都是會做限制的。

對我們來說,常見問題就是文件句柄的限制。

因?yàn)槿鬺inux限制你一個進(jìn)程的文件句柄太少,就會導(dǎo)致我們無法創(chuàng)建大量網(wǎng)絡(luò)連接,我們的系統(tǒng)進(jìn)程就無法正常工作。比如MySQL運(yùn)行時,其實(shí)就是Linux上的一個進(jìn)程,那么他其實(shí)是需要跟很多業(yè)務(wù)系統(tǒng)建立大量的連接的,結(jié)果你限制了他的最大文件句柄數(shù)量,那么他就不能建立太多連接了!

所以,你在生產(chǎn)環(huán)境部署了個系統(tǒng),比如DB系統(tǒng)、MQ系統(tǒng)、存儲系統(tǒng)、Cache系統(tǒng)后,都需要調(diào)整Linux的一些內(nèi)核參數(shù),這個文件句柄數(shù)量一定要調(diào)整,通常得設(shè)為65535。

比如Kafka之類的MQ,在生產(chǎn)環(huán)境部署時,若不優(yōu)化linux內(nèi)核參數(shù),會導(dǎo)致Kafka可能無法創(chuàng)建足夠的線程,此時也無法運(yùn)行。

所以可用ulimit命令設(shè)置每個進(jìn)程被限制使用的資源量,用

# 進(jìn)程被限制使用的各種資源的量 ulimit -a

線上MySQL不可用,報錯數(shù)據(jù)庫無法連接

  • core file size 進(jìn)程崩潰時的轉(zhuǎn)儲文件的大小限制
  • max locked memory 最大鎖定內(nèi)存大小
  • open files 最大可以打開的文件句柄數(shù)量
  • max user processes就是最多前可進(jìn)以擁有的子進(jìn)程數(shù)量。久性的設(shè)置進(jìn)程的資源

設(shè)置之后,要確保變更落地到/etc/security/limits.conf文件,永打印限制

所以執(zhí)行ulimit -HSn 65535命令后,要用如下命令檢查一下是否落地到配置文件里去了。

cat /etc/security/limits.conf cat /etc/rc.local

原文地址:https://www.toutiao.com/a7062342938801553953/

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免费一级在线视频 | 新久久久久久 | 羞羞的动漫在线观看 | 日本一区二区在线 | 成人一级黄色大片 | 免费看黄色一级片 | 亚洲一区二区三区精品在线观看 | 久久精国 | 九九热在线视频免费观看 | 成人一级毛片 | 成年人免费高清视频 | 久久久成人精品视频 | 黄色7777| 欧美不卡| 国产亚洲精品久久久闺蜜 | 一级啪啪片 | 康妮卡特欧美精品一区 | 国产成人av免费观看 | 国产午夜精品久久久 | 欧美爱爱视频免费看 | 高清国产免费 | 国产a级久久 | 一级影片在线观看 | 亚洲一区二区三区精品在线观看 | 69性欧美高清影院 | 免费一级高清毛片 | 91成人在线网站 | www视频免费在线观看 | 日本一区免费看 | 国产高潮国产高潮久久久91 | 中文字幕专区高清在线观看 | 国产污网站在线观看 | 黄色免费av | 欧美成人一级片 | 毛片一级免费看 | 精品久久久久久亚洲精品 | 在线观看福利网站 | 久久精品国产久精国产 | 国产激情精品一区二区三区 | av在线电影网址 | 乱淫67194|