最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在CentOS上運(yùn)行MySQL報(bào)錯(cuò)Too many connections(連接數(shù)打滿)的解決方案

 更新時(shí)間:2026年03月04日 09:25:01   作者:墨著染霜華  
在CentOS服務(wù)器上運(yùn)維MySQL時(shí),經(jīng)常會(huì)遇到 Too many connections 報(bào)錯(cuò),尤其是通過(guò) mysqld_safe 腳本啟動(dòng)、而非系統(tǒng) systemctl 管理的MySQL實(shí)例,本文結(jié)合實(shí)際運(yùn)維場(chǎng)景,詳細(xì)講解該報(bào)錯(cuò)的原因、應(yīng)急解決步驟、永久優(yōu)化方案,需要的朋友可以參考下

在CentOS服務(wù)器上運(yùn)維MySQL時(shí),經(jīng)常會(huì)遇到 Too many connections 報(bào)錯(cuò),尤其是通過(guò) mysqld_safe 腳本啟動(dòng)、而非系統(tǒng) systemctl 管理的MySQL實(shí)例(如本文實(shí)戰(zhàn)場(chǎng)景),報(bào)錯(cuò)后常規(guī)關(guān)閉、重啟命令會(huì)失效,甚至讓人誤以為MySQL服務(wù)異常。本文結(jié)合實(shí)際運(yùn)維場(chǎng)景,詳細(xì)講解該報(bào)錯(cuò)的原因、應(yīng)急解決步驟、永久優(yōu)化方案,全程可直接復(fù)制命令執(zhí)行,新手也能快速上手。

一、問(wèn)題場(chǎng)景復(fù)現(xiàn)(真實(shí)實(shí)戰(zhàn)案例)

服務(wù)器環(huán)境:CentOS 7,MySQL通過(guò) /usr/local/mysql/bin/mysqld_safe 腳本啟動(dòng)(非系統(tǒng)默認(rèn) mysqld/mariadb 服務(wù)),正常運(yùn)行一段時(shí)間后,執(zhí)行關(guān)閉命令時(shí)報(bào)錯(cuò):

[root@VM-0-16-centos ~]# /usr/local/mysql/bin/mysqladmin -uroot -p -S /tmp/mysql.sock shutdown
Enter password: 
mysqladmin: connect to server at 'localhost' failed
error: 'Too many connections'

同時(shí),用 systemctl status mysqld查看服務(wù)狀態(tài),顯示 inactive (dead),但通過(guò)ps aux | grep mysql 能看到MySQL進(jìn)程正常運(yùn)行——核心原因是:MySQL連接數(shù)打滿,導(dǎo)致無(wú)法建立新的管理連接,且MySQL未通過(guò)系統(tǒng)服務(wù)管理,常規(guī)命令失效。

二、核心原因分析

1. 直接原因:MySQL默認(rèn)連接數(shù)(max_connections)默認(rèn)值較低(通常為151),當(dāng)客戶端連接數(shù)超過(guò)該閾值,就會(huì)拒絕新連接,報(bào) Too many connections;

2. 間接原因:本次場(chǎng)景中,MySQL通過(guò) mysqld_safe 腳本啟動(dòng),而非系統(tǒng) systemd服務(wù),導(dǎo)致 systemctl 無(wú)法識(shí)別和管理MySQL進(jìn)程,常規(guī)的 systemctl restart mysqld 無(wú)效;

3. 潛在原因:未配置閑置連接超時(shí),導(dǎo)致大量閑置連接占用連接數(shù),長(zhǎng)期積累后打滿閾值。

三、分步解決方案(應(yīng)急+永久,全程實(shí)戰(zhàn))

核心思路:先安全停止打滿連接的MySQL進(jìn)程 → 臨時(shí)調(diào)高連接數(shù)重啟 → 修改配置文件永久優(yōu)化,全程保證數(shù)據(jù)不丟失。

第一步:應(yīng)急處理——安全停止MySQL進(jìn)程(解決連接數(shù)打滿)

由于連接數(shù)打滿,mysqladmin 無(wú)法登錄執(zhí)行關(guān)閉命令,此時(shí)需通過(guò) kill 命令發(fā)送正常關(guān)閉信號(hào),確保MySQL先處理完現(xiàn)有連接、刷盤(pán)后再退出(避免數(shù)據(jù)丟失),步驟如下:

  1. 查找MySQL主進(jìn)程PID(關(guān)鍵,對(duì)應(yīng) mysqld 進(jìn)程,而非 mysqld_safe): # 自動(dòng)查找MySQL主進(jìn)程PID,無(wú)需手動(dòng)輸入 MYSQL_PID=$(ps aux | grep '/usr/local/mysql/bin/mysqld' | grep -v grep | awk '{print $2}') # 查看找到的PID(確認(rèn)是否正確) echo $MYSQL_PID說(shuō)明:執(zhí)行后會(huì)輸出一串?dāng)?shù)字(如本文案例中的 26693),即為MySQL主進(jìn)程PID。
  2. 發(fā)送正常關(guān)閉信號(hào)(最安全,優(yōu)先使用):kill -TERM $MYSQL_PID說(shuō)明:kill -TERM 是正常關(guān)閉信號(hào),MySQL會(huì)收到信號(hào)后,停止接收新連接、處理完現(xiàn)有連接、將內(nèi)存中的數(shù)據(jù)刷到磁盤(pán),然后安全退出,不會(huì)丟失數(shù)據(jù)。
  3. 確認(rèn)進(jìn)程已停止:# 等待5秒,讓MySQL完成刷盤(pán)和退出 sleep 5 # 查看MySQL進(jìn)程,確認(rèn)是否停止 ps aux | grep mysql若輸出結(jié)果中,只有 grep --color=auto mysql 這一行,說(shuō)明MySQL已成功停止;若仍有 mysqld 進(jìn)程,執(zhí)行應(yīng)急強(qiáng)制關(guān)閉(僅兜底使用,盡量少用): kill -9 $MYSQL_PID注意:kill -9 會(huì)強(qiáng)制終止進(jìn)程,可能導(dǎo)致未刷盤(pán)的數(shù)據(jù)丟失,僅在 kill -TERM 無(wú)效時(shí)使用。

第二步:重啟MySQL(臨時(shí)調(diào)高連接數(shù),恢復(fù)服務(wù))

重啟時(shí),需沿用原有的 mysqld_safe 啟動(dòng)參數(shù),同時(shí)臨時(shí)調(diào)高連接數(shù),避免重啟后再次快速打滿,命令如下:

# 后臺(tái)重啟MySQL,保持原有datadir和pid-file參數(shù),臨時(shí)調(diào)高連接數(shù)到1000
nohup /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql/data --pid-file=/data/mysql/data/mysql.pid --max_connections=1000 

參數(shù)說(shuō)明:

  • --datadir=/data/mysql/data:MySQL數(shù)據(jù)存儲(chǔ)目錄(需和你服務(wù)器上的實(shí)際路徑一致,可通過(guò) ps aux | grep mysql 查看);
  • --pid-file=/data/mysql/data/mysql.pid:MySQL進(jìn)程PID文件路徑(同上,保持和原有啟動(dòng)參數(shù)一致);
  • --max_connections=1000:臨時(shí)將最大連接數(shù)調(diào)到1000(可根據(jù)服務(wù)器配置調(diào)整,如2核4G服務(wù)器建議1000-2000);
  • nohup ... &:后臺(tái)啟動(dòng),避免關(guān)閉終端后MySQL進(jìn)程退出。

重啟后驗(yàn)證是否成功:

# 1. 查看MySQL進(jìn)程是否正常啟動(dòng)(應(yīng)有mysqld_safe和mysqld兩個(gè)進(jìn)程)
ps aux | grep mysql

# 2. 登錄MySQL驗(yàn)證(使用實(shí)際的socket文件和端口)
/usr/local/mysql/bin/mysql -uroot -p -S /tmp/mysql.sock -P 5757

若能正常登錄MySQL,說(shuō)明重啟成功,服務(wù)已恢復(fù)正常。

第三步:永久優(yōu)化——修改配置文件,徹底解決連接數(shù)打滿

第二步中臨時(shí)調(diào)高的 max_connections,會(huì)在MySQL重啟后失效,需修改MySQL配置文件,永久生效,同時(shí)配置閑置連接超時(shí),自動(dòng)釋放無(wú)用連接。

  1. 查找MySQL配置文件(MySQL配置文件通常名為 my.cnfmy.ini,常見(jiàn)路徑如下): # 全局查找配置文件,挨個(gè)驗(yàn)證 find /etc /usr/local/mysql/ -name my.cnf -o -name my.ini常見(jiàn)結(jié)果:/etc/my.cnf/usr/local/mysql/my.cnf,找到后記錄路徑(本文以 /etc/my.cnf 為例)。
  2. 編輯配置文件(使用vi編輯器,新手可直接復(fù)制命令): vi /etc/my.cnf進(jìn)入編輯模式后,找到 [mysqld] 段落(若沒(méi)有,在文件頂部添加),添加/修改以下兩行:[mysqld] # 永久設(shè)置最大連接數(shù)(根據(jù)服務(wù)器配置調(diào)整,2核4G建議1000-2000,8核16G建議2000-3000) max_connections = 1000 # 閑置連接超時(shí)時(shí)間(單位:秒),600秒=10分鐘,超時(shí)后自動(dòng)釋放連接 wait_timeout = 600編輯完成后,按 Esc 鍵,輸入 :wq 保存并退出。
  3. 重啟MySQL,使配置生效(重復(fù)第一步和第二步的重啟命令): # 1. 停止MySQL(同第一步) MYSQL_PID=$(ps aux | grep '/usr/local/mysql/bin/mysqld' | grep -v grep | awk '{print $2}') kill -TERM $MYSQL_PID sleep 5 # 2. 重啟MySQL(無(wú)需再加--max_connections,配置文件已生效) nohup /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql/data --pid-file=/data/mysql/data/mysql.pid &
  4. 驗(yàn)證配置是否生效: # 登錄MySQL /usr/local/mysql/bin/mysql -uroot -p -S /tmp/mysql.sock -P 5757 # 查看當(dāng)前最大連接數(shù)和閑置超時(shí)時(shí)間 show variables like 'max_connections'; show variables like 'wait_timeout';若輸出結(jié)果中,max_connections 為1000、wait_timeout 為600,說(shuō)明配置已永久生效。

四、補(bǔ)充說(shuō)明(避坑關(guān)鍵)

1. 關(guān)于MySQL服務(wù)管理方式的補(bǔ)充

本文場(chǎng)景中,MySQL通過(guò) mysqld_safe 啟動(dòng),導(dǎo)致 systemctl status mysqld 顯示 dead,這是正?,F(xiàn)象——systemctl只能管理通過(guò)系統(tǒng)服務(wù)注冊(cè)的進(jìn)程,而 mysqld_safe 是手動(dòng)啟動(dòng)的腳本,不屬于系統(tǒng)服務(wù)。

若想后續(xù)用 systemctl 方便管理(如 systemctl restart mysql),可手動(dòng)創(chuàng)建 systemd 服務(wù)文件,具體步驟可參考文末拓展。

2. 連接數(shù)調(diào)整建議(避免過(guò)度調(diào)高)

max_connections 并非越高越好,需根據(jù)服務(wù)器配置調(diào)整:

  • 2核4G服務(wù)器:建議1000-2000;
  • 4核8G服務(wù)器:建議2000-3000;
  • 8核16G及以上:建議3000-5000;
  • 若服務(wù)器內(nèi)存較?。ㄈ?核2G),建議500-1000,避免連接數(shù)過(guò)高導(dǎo)致內(nèi)存耗盡。

3. 常見(jiàn)報(bào)錯(cuò)排查

(1)重啟后無(wú)法登錄MySQL:檢查 datadirpid-file 路徑是否正確,確保和啟動(dòng)參數(shù)一致;

(2)kill 進(jìn)程后仍無(wú)法重啟:檢查是否有殘留進(jìn)程,執(zhí)行 ps aux | grep mysql 找到殘留PID,用 kill -9 強(qiáng)制終止后再重啟;

(3)配置文件修改后不生效:確認(rèn)配置文件路徑正確,且修改后重啟了MySQL,同時(shí)檢查 [mysqld] 段落是否正確(配置必須在該段落下才會(huì)生效)。

五、拓展:將MySQL注冊(cè)為系統(tǒng)服務(wù)(可選,方便管理)

若想后續(xù)用 systemctl 管理MySQL(如啟動(dòng)、停止、開(kāi)機(jī)自啟),可創(chuàng)建 systemd 服務(wù)文件,步驟如下:

# 1. 創(chuàng)建服務(wù)文件
vi /etc/systemd/system/mysql.service

# 2. 寫(xiě)入以下內(nèi)容(需修改路徑為你服務(wù)器上的實(shí)際路徑)
[Unit]
Description=MySQL Server
After=network.target

[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql/data --pid-file=/data/mysql/data/mysql.pid
ExecStop=/usr/local/mysql/bin/mysqladmin -uroot -p密碼 -S /tmp/mysql.sock shutdown
Restart=on-failure

[Install]
WantedBy=multi-user.target

# 3. 重新加載系統(tǒng)服務(wù)
systemctl daemon-reload

# 4. 啟動(dòng)并設(shè)置開(kāi)機(jī)自啟
systemctl start mysql
systemctl enable mysql

# 5. 查看服務(wù)狀態(tài)
systemctl status mysql

說(shuō)明:將 ExecStop 中的 密碼 替換為你的MySQL root密碼,后續(xù)即可用 systemctl restart mysql 直接重啟,無(wú)需再手動(dòng)執(zhí)行 mysqld_safe 腳本。

六、總結(jié)

MySQL報(bào)錯(cuò) Too many connections 的核心是連接數(shù)閾值不足,結(jié)合本文實(shí)戰(zhàn)場(chǎng)景(mysqld_safe 啟動(dòng)的MySQL),解決流程可總結(jié)為:

應(yīng)急停止(kill -TERM 安全關(guān)閉)→ 臨時(shí)重啟(調(diào)高連接數(shù))→ 永久優(yōu)化(修改配置文件+閑置超時(shí)),全程無(wú)需復(fù)雜操作,命令可直接復(fù)制執(zhí)行。

另外,建議定期查看MySQL連接數(shù)狀態(tài)(show global status like 'Threads_connected';),及時(shí)調(diào)整 max_connections 閾值,避免再次出現(xiàn)連接數(shù)打滿的問(wèn)題。

以上就是在CentOS上運(yùn)行MySQL報(bào)錯(cuò)Too many connections(連接數(shù)打滿)的解決方案的詳細(xì)內(nèi)容,更多關(guān)于MySQL報(bào)錯(cuò)Too many connections的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • MySQL FIND_IN_SET 函數(shù)實(shí)戰(zhàn)實(shí)例

    MySQL FIND_IN_SET 函數(shù)實(shí)戰(zhàn)實(shí)例

    FIND_IN_SET是MySQL處理分隔字符串的函數(shù),用于判斷字符串是否存在于列表中,返回位置或0,適用于標(biāo)簽、分類等多值場(chǎng)景,但無(wú)法使用索引,性能較差,建議結(jié)合替代方案或優(yōu)化設(shè)計(jì),注意大小寫(xiě)敏感和空值處理問(wèn)題,對(duì)mysql find_in_set函數(shù)感興趣的朋友一起看看吧
    2025-07-07
  • mysql解決遠(yuǎn)程不能訪問(wèn)的二種方法

    mysql解決遠(yuǎn)程不能訪問(wèn)的二種方法

    mysql解決遠(yuǎn)程不能訪問(wèn)的二種方法,需要的朋友可以參考一下
    2013-04-04
  • 聊聊MySQL的COUNT(*)的性能

    聊聊MySQL的COUNT(*)的性能

    這篇文章主要介紹了聊聊MySQL的COUNT(*)的性能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 了解MySQL之Adaptive Hash Index的使用

    了解MySQL之Adaptive Hash Index的使用

    InnoDB的自適應(yīng)哈希索引(AHI)是內(nèi)存結(jié)構(gòu),自動(dòng)優(yōu)化等值查詢,不支持排序,通過(guò)緩存熱點(diǎn)數(shù)據(jù)提升效率,參數(shù)可調(diào)整,適用于特定場(chǎng)景
    2025-08-08
  • Mysql之索引的數(shù)據(jù)結(jié)構(gòu)詳解

    Mysql之索引的數(shù)據(jù)結(jié)構(gòu)詳解

    索引是存儲(chǔ)引擎用于快速找到數(shù)據(jù)記錄的一種數(shù)據(jù)結(jié)構(gòu),類似于教科書(shū)的目錄部分,在MySQL中,索引可以加速數(shù)據(jù)查找,減少磁盤(pán)I/O的次數(shù),提高查詢速率,但是,創(chuàng)建和維護(hù)索引需要耗費(fèi)時(shí)間,并且索引需要占磁盤(pán)空間,在InnoDB中,索引的實(shí)現(xiàn)基于B+樹(shù)結(jié)構(gòu)
    2024-12-12
  • MySql查詢中按多個(gè)字段排序的方法

    MySql查詢中按多個(gè)字段排序的方法

    在SQL查詢中,經(jīng)常需要按多個(gè)字段對(duì)結(jié)果進(jìn)行排序,本文主要介紹了MySql查詢中按多個(gè)字段排序的方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • MySQL慢查詢?cè)\斷與SQL注入防御詳解

    MySQL慢查詢?cè)\斷與SQL注入防御詳解

    本文介紹MySQL慢查詢?cè)\斷與SQL注入防御的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2026-04-04
  • mysql執(zhí)行sql文件報(bào)錯(cuò)Error: Unknown storage engine‘InnoDB’的解決方法

    mysql執(zhí)行sql文件報(bào)錯(cuò)Error: Unknown storage engine‘InnoDB’的解決方法

    最近在執(zhí)行一個(gè)innoDB類型sql文件的時(shí)候,發(fā)現(xiàn)系統(tǒng)報(bào)錯(cuò)了,通過(guò)查找相關(guān)的資料終于解決了,所以下面這篇文章主要給大家介紹了關(guān)于mysql執(zhí)行sql文件時(shí)報(bào)錯(cuò)Error: Unknown storage engine 'InnoDB'的解決方法,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-07-07
  • MAC下Mysql5.7.10版本修改root密碼的方法

    MAC下Mysql5.7.10版本修改root密碼的方法

    這篇文章主要介紹了MAC下Mysql5.7.10版本修改root密碼的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-03-03
  • MySQL的索引系統(tǒng)采用B+樹(shù)的原因解析

    MySQL的索引系統(tǒng)采用B+樹(shù)的原因解析

    索引是為了加速對(duì)表中數(shù)據(jù)行的檢索而創(chuàng)建的一種分散的存儲(chǔ)結(jié)構(gòu),這篇文章主要介紹了MySQL的索引系統(tǒng)采用B+樹(shù)的原因解析,需要的朋友可以參考下
    2021-09-09

最新評(píng)論

额敏县| 新源县| 东辽县| 道孚县| 望谟县| 平乡县| 浏阳市| 尼勒克县| 高要市| 延吉市| 通渭县| 尉氏县| 黄龙县| 九江县| 江永县| 湟源县| 隆化县| 泽库县| 邯郸市| 施秉县| 淮滨县| 蒙城县| 交口县| 镇坪县| 井陉县| 石屏县| 宜川县| 泾阳县| 高密市| 西贡区| 平乐县| 驻马店市| 从化市| 建始县| 专栏| 饶阳县| 清远市| 伊通| 新安县| 游戏| 东乡县|