成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

線上MySQL不可用,報錯數據庫無法連接

數據庫 MySQL
數據庫自己有個連接池,你的每個系統部署在機器時,那臺機器上部署的系統實例/服務實例自己也有個連接池,你的系統每個連接Socket都對應DB連接池里的一個Socket連接,這就是TCP連接。

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

數據庫自己有個連接池,你的每個系統部署在機器時,那臺機器上部署的系統實例/服務實例自己也有個連接池,你的系統每個連接Socket都對應DB連接池里的一個Socket連接,這就是TCP連接:

當MySQL告訴你Too many connections,就是在傳達它的連接池的連接已經滿了,你這業務系統不能再和它建立新的連接。

案例

DB部署在64G內存大機器,而連接這臺物理機的Java業務系統部署在2臺機器,Java系統的連接池最大大小為200,即每個Java業務系統節點,最多和MySQL建立200個連接,共最多建立400個連接。

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

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

登錄到MySQL機器,執行如下命令:

show variables like 'max_connections'

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

檢查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發現自己無法設置max_connections為我們期望的800,于是強制為214!因為底層linux把進程可打開的文件句柄數限制為1024了,導致MySQL最大連接數是214!

Linux文件句柄數量被限制也會導致MySQL最大連接數被限制。

如何解決

核心就如下命令:

ulimit -HSn 65535

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

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

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

此時再嘗試業務系統去連接DB,就沒問題了。

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

linux默認會限制你每個進程對機器資源的使用,包括:

  • 可打開的文件句柄的限制
  • 可打開的子進程數的限制
  • 網絡緩存的限制
  • 最大可鎖定的內存大小

因為linux os設計的初衷,就是要盡量避免你某個進程一下子耗盡機器上的所有資源,所以他默認都是會做限制的。

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

因為若linux限制你一個進程的文件句柄太少,就會導致我們無法創建大量網絡連接,我們的系統進程就無法正常工作。比如MySQL運行時,其實就是Linux上的一個進程,那么他其實是需要跟很多業務系統建立大量的連接的,結果你限制了他的最大文件句柄數量,那么他就不能建立太多連接了!

所以,你在生產環境部署了個系統,比如DB系統、MQ系統、存儲系統、Cache系統后,都需要調整Linux的一些內核參數,這個文件句柄數量一定要調整,通常得設為65535。

比如Kafka之類的MQ,在生產環境部署時,若不優化linux內核參數,會導致Kafka可能無法創建足夠的線程,此時也無法運行。

所以可用ulimit命令設置每個進程被限制使用的資源量,用

# 進程被限制使用的各種資源的量
ulimit -a

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

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

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

cat /etc/security/limits.conf

cat /etc/rc.local
責任編輯:華軒 來源: 今日頭條
相關推薦

2025-04-17 00:00:00

2023-11-22 15:34:41

oracleSQL數據庫

2010-03-16 09:41:32

Python不可用

2020-09-22 15:56:31

Java

2011-05-26 13:42:50

MFC連接MySql數據庫

2011-10-27 09:31:25

Windows 8 B

2011-03-09 08:53:02

MySQL優化集群

2010-06-07 15:24:34

Java連接MYSQL

2017-11-27 11:41:06

python數據庫數據分析

2024-01-02 08:47:42

2009-09-08 10:54:42

支付寶Firefox LinLinux插件

2011-07-25 14:49:36

jQuery

2011-07-14 09:31:22

Sql Server屬性ErrorLogF注冊表

2011-07-05 10:16:16

Qt 數據庫 SQLite

2024-03-27 12:14:56

數據庫高可用GDS

2010-08-02 16:40:43

面試

2021-06-26 10:46:04

Windows 11操作系統IE瀏覽器

2021-09-21 10:41:19

iOS蘋果系統

2011-08-04 11:35:14

服務器注冊表

2010-06-04 09:33:28

連接MySQL數據庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91久久精品一区二区二区 | 成人亚洲性情网站www在线观看 | 日韩欧美精品 | 欧洲精品码一区二区三区免费看 | 午夜久久久久久久久久一区二区 | 91在线精品视频 | 九九国产 | 四虎成人免费视频 | 亚洲字幕在线观看 | 欧美性吧 | 成人在线视频一区 | 欧美中文字幕在线观看 | 亚洲午夜精品一区二区三区 | 七七婷婷婷婷精品国产 | 久久午夜精品福利一区二区 | 国产精品一区二区欧美黑人喷潮水 | 国产视频1 | 亚洲国产午夜 | 在线亚洲精品 | 亚洲91精品 | 中文字幕日本一区二区 | 一二三四在线视频观看社区 | 中文二区 | 日韩精品成人在线 | 日韩国产免费 | 农夫在线精品视频免费观看 | 综合精品 | 网站国产 | 四虎影视在线 | 丁香一区二区 | 色播久久久 | 亚洲国产精品久久久 | 亚洲精品在线看 | 日韩一区二区在线视频 | 日韩精品一区二区三区在线播放 | 久久亚| 黄视频国产 | 伊色综合久久之综合久久 | 国产一区二区三区精品久久久 | 午夜精品久久久久久久久久久久久 | 自拍偷拍亚洲欧美 |