<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          破案了....

          共 2731字,需瀏覽 6分鐘

           ·

          2021-11-07 14:35


          1

          有人報(bào)案


          最近技術(shù)群里面有幾個(gè)同學(xué)碰到了 刪除Topic的問(wèn)題, 怎么樣也刪除不掉,然后我協(xié)助排查之后,就做個(gè)記錄,寫(xiě)篇文章,大家在碰到這類(lèi)型的問(wèn)題的時(shí)候應(yīng)該怎么去排查



          2

          收集線索


          1. 報(bào)not retrying deletion 異常
          2. 版本:kafka_2.11-2.0.0
          3. 刪除前在執(zhí)行重分配,但是失敗了,強(qiáng)制停止數(shù)據(jù)遷移,手動(dòng)刪除了節(jié)點(diǎn)/admin/reassign_partitions
          4. 再次重新刪除提示異常Topic test is already marked for deletion
          5. 所有Broker均在線
          6. delete.topic.enable=true
          7. 檢查了每個(gè)Broker都沒(méi)有副本被刪除,甚至也沒(méi)有被標(biāo)記為--delete


          3

          調(diào)查線索

          從我們收集到的線索來(lái)看,有兩個(gè)突破口
          1. not retrying deletion
          2. Topic test is already marked for deletion
          我們先看,第2個(gè)突破口,打開(kāi)kafka_2.11-2.0.0源碼,全局搜索關(guān)鍵字is already marked for deletion



          這個(gè)表示,你已經(jīng)標(biāo)記了這個(gè)topic刪除了, 在zk上寫(xiě)入了節(jié)點(diǎn)/amin/delete_topics/{topicName}
          上面收集線索時(shí)候我們知道是它重新執(zhí)行刪除的時(shí)候拋出的異常,說(shuō)明zk節(jié)點(diǎn)已經(jīng)寫(xiě)入了,已經(jīng)準(zhǔn)備刪除了; 這里沒(méi)有什么問(wèn)題

          問(wèn)題在于為什么沒(méi)有執(zhí)行刪除呢

          所以下一個(gè)突破口就在于

          Not retrying deletion of topic ....

          通過(guò)源碼我們知道,出現(xiàn)了這個(gè)異常表示的是:

          當(dāng)前這個(gè)topic不符合重試刪除的條件

          怎么樣才符合重試刪除條件?

          1. 在刪除隊(duì)列topicsToBeDeleted里面;這個(gè)隊(duì)列是從zk節(jié)點(diǎn)/amin/delete_topics獲取的數(shù)據(jù)

          2. 當(dāng)前還未開(kāi)始對(duì)該Topic進(jìn)行刪除; 判定條件是沒(méi)有副本處于開(kāi)始刪除的狀態(tài)「ReplicaDeletionStarted」(當(dāng)然如果delete.topic.enable=false這條肯定滿(mǎn)足)

          3. 主題沒(méi)有被標(biāo)記為不符合刪除條件; ?不符合刪除條件的都保存在topicsIneligibleForDeletion


          4

          抽絲剝繭,接近真相



          上面的3個(gè)條件,通過(guò)對(duì)方了解到
          1. /amin/delete_topics 節(jié)點(diǎn)下面有數(shù)據(jù), 線索排除
          2. 讓對(duì)方查詢(xún)了Deletion started for replicas這個(gè)日志,日志表示的是哪些副本狀態(tài)變更成「開(kāi)始刪除」 ,日志有查詢(xún)到如下

            ??????


            然后讓查詢(xún)Dead Replicas (%s) found for topic %s (這個(gè)表示的是哪些副本離線了) 也查詢(xún)到如下



          從日志,和源碼我們可以得出,Not retrying deletion of topic
          原因是: 刪除流程已經(jīng)開(kāi)始,但是存在離線的或不可用的副本?
          那么哪些副本異常,從上面的Dead Replicas (%s) found for topic %s 的日志可以得知,
          既然知道了原因,那么解決方案:聚焦副本為何離線了,讓副本恢復(fù)正常就行了?
          ?????????????????????過(guò)這里我們還有再重點(diǎn)說(shuō)一下第3種情況

          前面2個(gè)說(shuō)完了,接著說(shuō)一下topicsIneligibleForDeletion到底是什么,什么情況下才會(huì)放到這里面來(lái)呢?


          不符合Topic刪除條件是什么?

          Controller初始化的時(shí)候判斷條件


          Tips: kafka_2.11-2.0.0?沒(méi)有這個(gè)步驟


          1. 數(shù)據(jù)正在遷移中 判斷數(shù)據(jù)是否在遷移中是通過(guò)判斷topic的是否存在要新增或者刪除的副本, 查詢(xún)/brokers/topics/{topicName}節(jié)點(diǎn)中有沒(méi)有這兩個(gè)屬性值


          2. topic副本所在Broker有宕機(jī)導(dǎo)致的副本不在線

          3. 副本所在的數(shù)據(jù)目錄log.dirs存在脫機(jī)磁盤(pán)

          運(yùn)行中判斷條件
          1. 發(fā)起的StopReplica 請(qǐng)求返回異常,加入不符合刪除條件
          2. 刪除的過(guò)程中,發(fā)現(xiàn)該Topic 有副本重分配的操作 則加入不符合刪除條件
          3. 刪除的過(guò)程,有副本下線了,則加入不符合刪除條件
          4. 開(kāi)始執(zhí)行副本重分配的操作, 則加入不符合刪除條件



          5

          結(jié)案



          經(jīng)過(guò)深入源碼排查走訪,我們基本上確定了問(wèn)題的根源?
          副本離線,導(dǎo)致的刪除流程不能完成; 通過(guò)查詢(xún)?nèi)罩?也鎖定了那些個(gè)嫌疑犯
          好家伙還是團(tuán)伙作案



          最后的解決方案也很粗暴,找到副本不正常的那幾臺(tái)Broker, 重啟 ...之后副本瘋狂同步(其他一些topic數(shù)據(jù)同步);最終topic正常刪除了

          6

          排查手冊(cè)


          為了以后出現(xiàn)同樣類(lèi)似的問(wèn)題,我總結(jié)了一下問(wèn)題的排查手段,給大家指明一條思路; 快速破案

          1. 確保 ?delete.topic.enable=true ;配置文件查詢(xún)
          2. 確保當(dāng)前該topic沒(méi)有進(jìn)行 「副本重分配」 , 查詢(xún)zk節(jié)點(diǎn)/admin/reassign_partitions的值是否有該topic、或者 節(jié)點(diǎn)/brokers/topics/{topicName}節(jié)點(diǎn)里面的屬性adding_replicas、removing_replicas有沒(méi)有值
          3. 確保所有副本所屬Broker均在線
          4. 確保副本均在線, (Broker在線并且log.dirs沒(méi)有脫機(jī)), 搜日志"Dead Replicas " 關(guān)鍵字查詢(xún)到哪些副本異常
          解放方案?根據(jù)上面的排查順序,對(duì)應(yīng)不同的解決方案; 如果正在進(jìn)行 「副本重分配」 ?那么等待分配完成就可以正常刪除了 如果是副本不在線,那么就去解決為啥不在線,該重啟就重啟
          當(dāng)然知道整個(gè)刪除原理對(duì)你排查工作很有幫助;?
          萬(wàn)字長(zhǎng)文解析kafka刪除Topic流程領(lǐng)導(dǎo)再也不用擔(dān)心我排查生產(chǎn)環(huán)境問(wèn)題了(附教學(xué)視頻,)


          7

          幕后黑手?


          這就完了嗎?
          「log.dir為什么會(huì)脫機(jī)呢?」 ? 「脫機(jī)跟數(shù)據(jù)遷移有關(guān)系嗎?」




          根據(jù)以往群友問(wèn)的一些問(wèn)題, 好像數(shù)據(jù)遷移總是會(huì)伴隨著一些刪除上的問(wèn)題 導(dǎo)致數(shù)據(jù)目錄脫機(jī)的原因的最終BOSS是 「副本重分配」嗎?

          留下懸念, 下期再見(jiàn)!



          往期推薦


          一圖全解kafka在zookeeper中的數(shù)據(jù)結(jié)構(gòu)

          2021-09-06

          聽(tīng)說(shuō)你還在傻傻的關(guān)閉服務(wù)器去改配置?(附視頻)

          2021-08-30

          這可能是kafka的一個(gè)小bug.....

          2021-08-25

          萬(wàn)字長(zhǎng)文解析kafka刪除Topic流程領(lǐng)導(dǎo)再也不用擔(dān)心我排查生產(chǎn)環(huán)境問(wèn)題了(附教學(xué)視頻,)

          2021-08-16



          瀏覽 49
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美精品三级网站 | 伊人av电影 | 免费无码一级A片大黄在线观看 | 久久久久久亚洲Av无码精品专口 | 中文无码一区二区三区 |