應(yīng)用直接中斷連接導(dǎo)致數(shù)據(jù)被鎖(生產(chǎn)故障)
基本情況:
故障: 某些數(shù)據(jù)庫中的表數(shù)據(jù)相當(dāng)長一段時間被鎖,導(dǎo)致應(yīng)用某些場景失敗。
故障分析:應(yīng)用開啟一個事務(wù)的set autocommit=0命令是從app-lb-db訪問層-db,期間如果某個事務(wù)還未執(zhí)行完,而app強行中斷連接,就會導(dǎo)致app-lb的連接斷開,而lb并不直接斷開后端的連接,即lb-db訪問層-db的連接不會斷,從而導(dǎo)致db不會發(fā)生回滾操作。而且此事務(wù)對某些記錄加了鎖,于是就會發(fā)生某些數(shù)據(jù)被鎖。直到db訪問層檢測出該連接超過了idle時間才會關(guān)閉,并發(fā)送回滾命令給db。
解決問題:
① lb在前端連接關(guān)閉時要同時關(guān)閉同會話的后端連接,并且db訪問層要監(jiān)聽lb的連接,一旦關(guān)閉則要做回滾操作。
②去掉lb,提供客戶端loadbalance,應(yīng)用一旦關(guān)閉連接db訪問層也要關(guān)閉連接。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
標(biāo)簽:常德 臨沂 湖州 天津 重慶 成都 內(nèi)蒙古 貴州
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Mysql 出現(xiàn)故障應(yīng)用直接中斷連接導(dǎo)致數(shù)據(jù)被鎖(生產(chǎn)故障)詳解》,本文關(guān)鍵詞 Mysql,出現(xiàn),故障,應(yīng)用,直接,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。