連接云虛擬主機(jī)中MySQL數(shù)據(jù)庫(kù)時(shí)出現(xiàn)“Too many connections”報(bào)錯(cuò)信息
應(yīng)用程序連接MySQL數(shù)據(jù)庫(kù)時(shí),可能會(huì)因?yàn)闆](méi)有及時(shí)釋放MySQL數(shù)據(jù)庫(kù)的連接,使得連接數(shù)堆積且連接數(shù)量過(guò)多,從而導(dǎo)致新的連接請(qǐng)求無(wú)法連接到MySQL數(shù)據(jù)庫(kù),出現(xiàn)Error: Too many connections
報(bào)錯(cuò)信息。本文介紹這種情況的可能原因和解決方案。
問(wèn)題描述
在使用云虛擬主機(jī)過(guò)程中,連接MySQL數(shù)據(jù)庫(kù)時(shí)顯示以下報(bào)錯(cuò)信息。表示MySQL數(shù)據(jù)庫(kù)服務(wù)器當(dāng)前的連接數(shù)已經(jīng)達(dá)到了最大限制,無(wú)法處理更多的連接請(qǐng)求。
Can not connect to MySQL server
Error: Too many connections
可能原因
應(yīng)用程序連接MySQL數(shù)據(jù)庫(kù)時(shí),由于應(yīng)用程序沒(méi)有及時(shí)釋放MySQL數(shù)據(jù)庫(kù)的連接,使得連接數(shù)堆積且連接數(shù)量過(guò)多,因此,新的連接請(qǐng)求無(wú)法連接到MySQL數(shù)據(jù)庫(kù),導(dǎo)致上述報(bào)錯(cuò)信息出現(xiàn)。
解決方案
本文以阿里云賬號(hào)登錄Linux操作系統(tǒng)云虛擬主機(jī)為例,為您介紹通過(guò)終止數(shù)據(jù)庫(kù)的連接進(jìn)程的方案來(lái)解決上述問(wèn)題。
該方案是一種暫時(shí)性的(短期的)解決方法,要從根本上解決上述問(wèn)題,需要您從程序角度排查,檢查數(shù)據(jù)庫(kù)調(diào)用的代碼并及時(shí)釋放數(shù)據(jù)庫(kù)的連接。
- 登錄云虛擬主機(jī)管理頁(yè)面。
- 找到待操作的云虛擬主機(jī),單擊對(duì)應(yīng)操作列下的管理。
- 在左側(cè)導(dǎo)航欄,單擊數(shù)據(jù)庫(kù)信息。
在數(shù)據(jù)庫(kù)信息頁(yè)面,單擊數(shù)據(jù)庫(kù)對(duì)應(yīng)操作列下的管理。
說(shuō)明如果您通過(guò)控制臺(tái)賬號(hào)和密碼登錄云虛擬主機(jī),在數(shù)據(jù)庫(kù)信息頁(yè)面,單擊數(shù)據(jù)庫(kù)對(duì)應(yīng)操作列下的下載DMS客戶端進(jìn)入DMS數(shù)據(jù)管理服務(wù)頁(yè)面。
登錄MySQL數(shù)據(jù)庫(kù)。
以通過(guò)數(shù)據(jù)管理DMS Web版本登錄數(shù)據(jù)庫(kù)為例,具體操作,請(qǐng)參見(jiàn)通過(guò)數(shù)據(jù)管理DMS Web版本登錄數(shù)據(jù)庫(kù)。
在SQL Console頁(yè)面下的命令執(zhí)行區(qū)域,執(zhí)行以下SQL語(yǔ)句,查看當(dāng)前會(huì)話詳情。
show processlist
在執(zhí)行結(jié)果區(qū)域中,您可以查看并記錄運(yùn)行時(shí)間較長(zhǎng)的ID字段值,該值表示連接數(shù)據(jù)庫(kù)的進(jìn)程ID。
在SQL Console頁(yè)面下的命令執(zhí)行區(qū)域,執(zhí)行以下SQL語(yǔ)句,終止該進(jìn)程。
Kill [$Id]
說(shuō)明[$Id]為步驟6獲取的進(jìn)程ID。