MySQL連接過多導致數據庫無法正常使用的解決方案

問題描述

       當前在做的一個項目中,採取前後臺完全分離的開發模式,各自分工來共同完成項目的正常運轉。在配置文件中設置了一個MySQL數據庫的最大連接數爲100,然後在測試時發現問題。只要多刷新幾次頁面,後臺就會報一個錯誤,錯誤信息爲:too many connections 直譯爲連接太多。出現這個問題後,就會自動退出登錄,導致項目無法正常運行。

解決方案

       我自己尋找很久都沒有找到問題的原因,然後請求同事幫忙解決這個問題。直接原因是設置的MYSQL的連接數太小導致的,根本原因是使用的node的一個連接MySQL數據庫的包的方式存在問題,每次操作數據庫時都會創建一個新的連接,而且操作完成後沒有釋放連接進而出現問題,框架的設計者可能沒有考慮到這個問題才導致這樣的情況。

        簡單的處理辦法爲執行下面一段sql:

select CONCAT('kill ',id,';'),INFO from information_schema.`PROCESSLIST` where time > 20 AND INFO IS NOT NULL;這個sql語句的作用是查詢執行時間大於20s的SQL語句進程ID,然後拷貝查詢結果,打開一個新的查詢窗口,殺掉這些進程即可。這種方法治標不治本,臨時解決即可。好的解決方案是更換MySQL數據庫操作的包爲阿里巴巴提供的ali-rds,這個包有一個好處,我們只需要負責增、刪、改、查的操作即可,操作完後它會自己釋放連接,這樣就很好的解決了前面遇到的問題。

總結歸納

      從這裏學習到的新知識點是MySQL可以殺掉單個連接的進程,如果有需要可以隨時殺掉,一般只幹掉查詢的進程。操作MYSQL數據庫時,操作完成後一定要釋放資源,不釋放資源就會出現我上面的情況,導致哦mysql不能正常使用,並且性能降低。以前只是在學習MYSQL基礎理論時,老師這樣講解過,現在真實遇到了印象會更加的深刻!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章