<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>

          TiDB 實(shí)踐 | TiDB 故障診斷與性能排查:發(fā)生即看見,一切可回溯,Continuous Profiling 應(yīng)用實(shí)踐

          共 3469字,需瀏覽 7分鐘

           ·

          2021-12-17 15:11

          在企業(yè)遭遇的 IT 故障中,約有 30% 與數(shù)據(jù)庫相關(guān)。當(dāng)這些故障涉及到應(yīng)用系統(tǒng)、網(wǎng)絡(luò)環(huán)境、硬件設(shè)備時(shí),恢復(fù)時(shí)間可能達(dá)到數(shù)小時(shí),對業(yè)務(wù)連續(xù)性造成破壞,影響用戶體驗(yàn)甚至營收。在復(fù)雜分布式系統(tǒng)場景下,如何提高數(shù)據(jù)庫的可觀測性,幫助運(yùn)維人員快速診斷問題,優(yōu)化故障處理流程一直是困擾著企業(yè)的一大難題。


          一次海量數(shù)據(jù)場景下的性能排查經(jīng)歷

          沒有 Continuous Profiling 的客戶故障排查案例


          • 19:15 新節(jié)點(diǎn)上線
          • 19:15 - 19:32 上線的節(jié)點(diǎn)由于 OOM 反復(fù)重啟,導(dǎo)致其他節(jié)點(diǎn)上 snapshot 文件積累,節(jié)點(diǎn)狀態(tài)開始異常

          • 19:32 收到響應(yīng)時(shí)間過長業(yè)務(wù)報(bào)警

          • 19:56 客戶聯(lián)系 PingCAP 技術(shù)支持,反映情況如下:

            • 集群響應(yīng)延遲很高,一個(gè) TiKV 節(jié)點(diǎn)加入集群后發(fā)生掉量,而后刪除該節(jié)點(diǎn),但其他 TiKV 節(jié)點(diǎn)出現(xiàn) Disconnect Store 現(xiàn)象,同時(shí)發(fā)生大量 Leader 調(diào)度,集群響應(yīng)延遲高,服務(wù)掛掉

          • 20:00 PingCAP 技術(shù)支持上線排查

          • 20:04 - 21:08 技術(shù)支持對多種指標(biāo)進(jìn)行排查,從 metrics 的 iotop 發(fā)現(xiàn) raftstore 線程讀 io 很高,通過監(jiān)控發(fā)現(xiàn)有大量的 rocksdb snapshot 堆積,懷疑是 region snapshot 的生成導(dǎo)致的,建議用戶刪掉之前故障 TiKV 節(jié)點(diǎn)上的 pending peer,并重啟集群

          • 20:10 -?20:30 技術(shù)支持同時(shí)對 profiling 信息排查,抓取火焰圖,但因?yàn)樽ト∵^程中出問題的函數(shù)沒有運(yùn)行,沒有看到有用的信息

          火焰圖的查看方式:(源自:https://www.brendangregg.com/flamegraphs.html

          y 軸表示調(diào)用棧,每一層都是一個(gè)函數(shù)。調(diào)用棧越深,火焰就越高,頂部就是正在執(zhí)行的函數(shù),下方都是它的父函數(shù)。

          x 軸表示抽樣數(shù),如果一個(gè)函數(shù)在 x 軸占據(jù)的寬度越寬,就表示它被抽到的次數(shù)多,即執(zhí)行的時(shí)間長。注意,x 軸不代表時(shí)間,而是所有的調(diào)用棧合并后,按字母順序排列的?;鹧鎴D就是看頂層的哪個(gè)函數(shù)占據(jù)的寬度最大。只要有 "平頂"(plateaus),就表示該函數(shù)可能存在性能問題。顏色沒有特殊含義,因?yàn)榛鹧鎴D表示的是 CPU 的繁忙程度,所以一般選擇暖色調(diào)。

          從以上查看方式可以發(fā)現(xiàn),這次抓取到的火焰圖并沒有一個(gè)大的 “平頂”,所有函數(shù)的寬度(執(zhí)行時(shí)間長)都是不會太大。在這個(gè)階段,沒能直接從火焰圖發(fā)現(xiàn)性能瓶頸是令人失望的。這時(shí)候客戶對于恢復(fù)業(yè)務(wù)已經(jīng)比較著急。

          • 21:10 通過刪除 pod 的方式重啟了某個(gè) TiKV 節(jié)點(diǎn)之后,發(fā)現(xiàn) io 并沒有降下來
          • 21:10 - 21:50 客戶繼續(xù)嘗試通過刪除 pod 的方式重啟 TiKV 節(jié)點(diǎn)
          • 21:50 再次抓取火焰圖,發(fā)現(xiàn) raftstore::store::snap::calc_checksum_and_size 函數(shù)處占用的大量的 CPU,確認(rèn)根因

          這次抓取到的火焰圖發(fā)現(xiàn)一個(gè)明顯的 “大平頂”,可以明顯看到是 raftstore::store::snap::calc_checksum_and_size 函數(shù)。這個(gè)函數(shù)占用了大量的 CPU 執(zhí)行時(shí)長,可以確定整體性能瓶頸就在這里函數(shù)相關(guān)的功能。到這一步,我們確定了根因,并且也可以根據(jù)根因確定恢復(fù)方案。

          • 22:04 采取操作:停止 TiKV pod,刪除流量大的 TiKV 節(jié)點(diǎn) snap 文件夾下所有 gen 文件。目前逐漸恢復(fù)中

          • 22:25 業(yè)務(wù)放量,QPS 恢復(fù)原先水平,說明操作有效

          • 22:30 集群完全恢復(fù)


          集群恢復(fù)耗時(shí):19:56 - 22:30,共 2 小時(shí) 34 分(154 分)。
          確認(rèn)根因,提出有效操作耗時(shí):19:56 - 22:04,共 2 小時(shí) 8 分(128 分)。

          在這個(gè)案例中,如果我們能夠有一個(gè)在故障前、中、后期,連續(xù)性地對集群進(jìn)行性能分析的能力,我們就可以直接對比故障發(fā)生時(shí)刻和故障前的火焰圖,快速發(fā)現(xiàn)占用 CPU 執(zhí)行時(shí)間較多的函數(shù),極大節(jié)約這個(gè)故障中發(fā)現(xiàn)問題根因的時(shí)間。

          因此,同樣的案例,如果有 Continuous Profiling 功能:

          • 19:15 新節(jié)點(diǎn)上線

          • 19:15 - 19:32 上線的節(jié)點(diǎn)由于 OOM 反復(fù)重啟,導(dǎo)致其他節(jié)點(diǎn)上 snapshot 文件積累,節(jié)點(diǎn)狀態(tài)開始異常

          • 19:32 收到響應(yīng)時(shí)間過長業(yè)務(wù)報(bào)警

          • 19:56 客戶聯(lián)系 PingCAP 技術(shù)支持,反映情況如下:

          • 集群響應(yīng)延遲很高,一個(gè) TiKV 節(jié)點(diǎn)加入集群后發(fā)生掉量,而后刪除該節(jié)點(diǎn),但其他 TiKV 節(jié)點(diǎn)出現(xiàn) Disconnect Store 現(xiàn)象,同時(shí)發(fā)生大量 Leader 調(diào)度,集群響應(yīng)延遲高,服務(wù)掛掉
          • 20:00 PingCAP 技術(shù)支持上線排查
          • 20:04 - 20:40 技術(shù)支持對多種指標(biāo)進(jìn)行排查,從 metrics 的 iotop 發(fā)現(xiàn) raftstore 線程讀 io 很高,通過監(jiān)控發(fā)現(xiàn)有大量的 rocksdb snapshot 堆積,懷疑是 region snapshot 的生成導(dǎo)致的
          • 20:10 -?20:40 技術(shù)支持同時(shí)對 continuous profiling 信息排查,查看故障發(fā)生時(shí)刻的多個(gè)火焰圖,與未發(fā)生故障的正?;鹧鎴D對比,發(fā)現(xiàn) raftstore::store::snap::calc_checksum_and_size 函數(shù)占用的大量的 CPU,確認(rèn)根因
          • 20:55 采取操作:停止 TiKV pod,刪除流量大的 TiKV 節(jié)點(diǎn) snap 文件夾下所有 gen 文件。目前逐漸恢復(fù)中
          • 21:16 業(yè)務(wù)放量,QPS 恢復(fù)原先水平,說明操作有效
          • 21:21 集群完全恢復(fù)


          集群恢復(fù)(預(yù)期)耗時(shí):19:56 - 21:21,共 1 小時(shí) 25 分(85 分),相比下降 44.8%。
          確認(rèn)根因,提出有效操作(預(yù)期)耗時(shí):19:56 - 20:55,共 59 分,相比下降 53.9%。

          可以看到該功能可以極大縮短確定根因時(shí),盡可能幫助客戶挽回因性能故障造成的業(yè)務(wù)停擺損失。

          “持續(xù)性能分析” 功能詳解

          在剛剛發(fā)布的 TiDB 5.3 版本中,PingCAP 率先在數(shù)據(jù)庫領(lǐng)域推出 “持續(xù)性能分析”(Continuous Profiling)功能(目前為實(shí)驗(yàn)特性),跨越分布式系統(tǒng)可觀測性的鴻溝,為用戶帶來數(shù)據(jù)庫源碼水平的性能洞察,徹底解答每一個(gè)數(shù)據(jù)庫問題。“持續(xù)性能分析”是一種從系統(tǒng)調(diào)用層面解讀資源開銷的方,通過火焰圖的形式幫助研發(fā)、運(yùn)維人員定位性能問題的根因,無論過去現(xiàn)在皆可回溯。


          持續(xù)性能分析以低于 0.5% 的性能損耗實(shí)現(xiàn)了對數(shù)據(jù)庫內(nèi)部運(yùn)行狀態(tài)持續(xù)打快照(類似 CT 掃描),以火焰圖的形式從系統(tǒng)調(diào)用層面解讀資源開銷,讓原本黑盒的數(shù)據(jù)庫變成白盒。在? TiDB Dashboard 上一鍵開啟持續(xù)性能分析后,運(yùn)維人員可以方便快速地定位性能問題的根因。

          火焰圖示例

          主要應(yīng)用場景

          當(dāng)數(shù)據(jù)庫意外宕機(jī)時(shí),可降低至少 50% 診斷時(shí)間

          在互聯(lián)網(wǎng)行業(yè)的一個(gè)案例中,當(dāng)客戶集群出現(xiàn)報(bào)警業(yè)務(wù)受影響時(shí),因缺少數(shù)據(jù)庫連續(xù)性能分析結(jié)果,運(yùn)維人員難以發(fā)現(xiàn)故障根因,耗費(fèi) 3 小時(shí)才定位問題恢復(fù)集群。如果使用 TiDB 的持續(xù)性能分析功能,運(yùn)維人員可比對日常和故障時(shí)刻的分析結(jié)果,僅需 20 分鐘就可恢復(fù)業(yè)務(wù),極大減少損失。

          在日常運(yùn)行中,可提供集群巡檢和性能分析服務(wù),保障集群持續(xù)穩(wěn)定運(yùn)行
          持續(xù)性能分析是 TiDB 集群巡檢服務(wù)的關(guān)鍵,為商業(yè)客戶提供了集群巡檢和巡檢結(jié)果數(shù)據(jù)上報(bào)??蛻艨梢宰孕邪l(fā)現(xiàn)和定位潛在風(fēng)險(xiǎn),執(zhí)行優(yōu)化建議,保證每個(gè)集群持續(xù)穩(wěn)定運(yùn)行。

          在數(shù)據(jù)庫選型時(shí),提供更高效的業(yè)務(wù)匹配
          在進(jìn)行數(shù)據(jù)庫選型時(shí),企業(yè)往往需要在短時(shí)間內(nèi)完成功能驗(yàn)證、性能驗(yàn)證的流程。持續(xù)性能分析功能能夠協(xié)助企業(yè)更直觀地發(fā)現(xiàn)性能瓶頸,快速進(jìn)行多輪優(yōu)化,確保數(shù)據(jù)庫與企業(yè)的業(yè)務(wù)特征適配,提高數(shù)據(jù)庫的選型效率。

          深入了解和體驗(yàn) “持續(xù)性能分析”:https://docs.pingcap.com/zh/tidb/stable/continuous-profiling

          ??Tip:上文劃線部分均有跳轉(zhuǎn),由于微信外鏈限制,大家可以點(diǎn)擊尾部【閱讀原文】查看原文

          瀏覽 38
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(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>
                  国产操逼精品 | 久久 无码 一区二区三区四区 | 99国精产品自偷自偷综合 | AV在线电影网 | 日韩精品1区2区3区 |