亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

軟件開發(fā)培訓(xùn)學(xué)校:解Bug之路-記一次存儲(chǔ)故障的排查過程( 二 )


軟件開發(fā)培訓(xùn)學(xué)校:解Bug之路-記一次存儲(chǔ)故障的排查過程

文章插圖
 只能靠日志分析了既然找不到什么頭緒 , 那么只能從日志入手 , 好好分析推理了 。REACTOR線程和Worker線程同時(shí)報(bào)錯(cuò) , 但兩者并無特殊的關(guān)聯(lián) , 說明可能是同一個(gè)原因引起的兩種不同現(xiàn)象 。筆者在線上報(bào)錯(cuò)日志里面進(jìn)行細(xì)細(xì)搜索 , 發(fā)現(xiàn)在大量的NIOReactor-1-RW register err java.nio.channels.CloasedChannelException日志中會(huì)摻雜著這個(gè)報(bào)錯(cuò):NIOReactor-1-RW Socket Read timed out at XXXXXX . doCommit at XXXXXX Socket read timedout這一看就發(fā)現(xiàn)了端倪 , Reactor作為一個(gè)IO線程 , 怎么會(huì)有數(shù)據(jù)庫調(diào)用呢?于是翻了翻源碼 , 原來 , 我們的中間件在處理commit/rollback這樣的操作時(shí)候還是在Reactor線程進(jìn)行的!很明顯Reactor線程卡主是由于commit慢了!筆者立馬反應(yīng)過來,而這個(gè)commit慢也正是導(dǎo)致了regsiter err以及客戶端無法創(chuàng)建連接的元兇 。如下面所示:
軟件開發(fā)培訓(xùn)學(xué)校:解Bug之路-記一次存儲(chǔ)故障的排查過程

文章插圖
 由于app1的commit特別慢而卡住了reactor1線程 , 從而落在reactor1線程上的握手操作都會(huì)超時(shí)!如下圖所示:
軟件開發(fā)培訓(xùn)學(xué)校:解Bug之路-記一次存儲(chǔ)故障的排查過程

文章插圖
 為什么之前的模擬宕機(jī)測(cè)試發(fā)現(xiàn)不了這一點(diǎn)因?yàn)槟M宕機(jī)的時(shí)候 , 在事務(wù)開始的第一條SQL就會(huì)報(bào)錯(cuò) , 而執(zhí)行SQL都是在Worker線程里面 ,  所以并不會(huì)觸發(fā)reactor線程中commit超時(shí)這種現(xiàn)象 , 所以測(cè)試的時(shí)候就遺漏了這一點(diǎn) 。為什么commit會(huì)變慢?系統(tǒng)一直跑的好好的 , 為什么突然commit就變慢了呢 , 而且筆者發(fā)現(xiàn) , 這個(gè)commit變慢所關(guān)聯(lián)的DB正好也是出現(xiàn)慢SQL的那個(gè)DB 。于是筆者立馬就去找了DBA,由于我們應(yīng)用層和數(shù)據(jù)庫層都沒有commit時(shí)間的監(jiān)控(因?yàn)橐话愣己芸?nbsp;, 很少出現(xiàn)慢的現(xiàn)象) 。DBA在數(shù)據(jù)庫打的日志里面進(jìn)行了統(tǒng)計(jì) , 發(fā)現(xiàn)確實(shí)變慢了 , 而且變慢的時(shí)間和我們應(yīng)用報(bào)錯(cuò)的時(shí)間相符合! 順藤摸瓜 , 我們又聯(lián)系了SA , 發(fā)現(xiàn)其中和存儲(chǔ)相關(guān)的HBA卡有報(bào)錯(cuò)!如下圖所示:
軟件開發(fā)培訓(xùn)學(xué)校:解Bug之路-記一次存儲(chǔ)故障的排查過程

文章插圖
 報(bào)錯(cuò)時(shí)間都是一致的!緊急修復(fù)方案由于是HBA卡報(bào)錯(cuò)了 , 屬于硬件故障 , 而硬件故障并不是很快就能進(jìn)行修復(fù)的 。所以DBA做了一次緊急的主從切換 , 進(jìn)而避免這一問題 。
軟件開發(fā)培訓(xùn)學(xué)校:解Bug之路-記一次存儲(chǔ)故障的排查過程

文章插圖
 一身冷汗之前就有慢sql慢慢變多 , 而后突然數(shù)據(jù)庫存儲(chǔ)hba卡宕機(jī)導(dǎo)致業(yè)務(wù)不可用的情況 。而這一次到最后主從切換前為止 , 報(bào)錯(cuò)越來越頻繁 , 感覺再過一段時(shí)間,HBA卡過段時(shí)間就完全不可用 , 重蹈之前的覆轍了!中間件修復(fù)我們?cè)谥虚g件層面將commit和rollback操作挪到Worker里面 。這樣 , commit如果卡住就不再會(huì)引起創(chuàng)建連接失敗這種應(yīng)用報(bào)錯(cuò)了 ??偨Y(jié)由于軟件層面其實(shí)是比較信任硬件的 , 所以在硬件出問題時(shí) , 就會(huì)產(chǎn)生很多詭異的現(xiàn)象 , 而且和硬件最終的原因在表面上完全產(chǎn)生不了關(guān)聯(lián) 。只有通過抽絲剝繭 , 慢慢的去探尋現(xiàn)象的本質(zhì)才會(huì)解決最終的問題 。要做到高可用真的是要小心評(píng)估各種細(xì)節(jié) , 才能讓系統(tǒng)更加健壯!作者:無毀的湖光-A


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專業(yè)人士給予相關(guān)指導(dǎo)!

「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助: