數據庫too many connections 解決方法


問題:網站后台突然報錯了,顯示“too many connections........”這是咋回事?

解決:

  先羅列幾個有用的操作:

  ① mysql -u root -p  回車輸入密碼進入mysql

  ② show processlist;  查看連接數,可以發現有很多連接處於sleep狀態,這些其實是暫時沒有用的,所以可以kill掉

  ③ show variables like "max_connections";  查看最大連接數,應該是與上面查詢到的連接數相同,才會出現too many connections的情況

  ④ set GLOBAL max_connections=1000;  修改最大連接數,但是這不是一勞永逸的方法,應該要讓它自動殺死那些sleep的進程。

  ⑤ show global variables like 'wait_timeout';  這個數值指的是mysql在關閉一個非交互的連接之前要等待的秒數,默認是28800s

  ⑥ set global wait_timeout=300;  修改這個數值,這里可以隨意,最好控制在幾分鍾內  

  ⑦ set global interactive_timeout=500;  修改這個數值,表示mysql在關閉一個連接之前要等待的秒數,至此可以讓mysql自動關閉那些沒用的連接,但要注意的是,正在使用的連接到了時間也會被關閉,因此這個時間值要合適

我的解決方法:

     ① select concat('KILL ',id,';') from information_schema.processlist where user='root'; 先把要kill的連接id都查詢出來

  ②  復制中間的kill id; 

    ③ 把修改過的內容復制回終端,最后按回車執行

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM