TiDB 4.0 新特性前瞻(四)圖形化診斷界面

某天,PongHat 公司 DBA 小王同學收到了業務側的反饋:”小王啊,我們數據庫查詢現在突然變得很慢,業務已經緊急停了,能不能看下是什麼情況?“

小王同學身經百戰、見得多了,熟練地輸入了 TiDB Grafana 地址,點進 TiDB 監控面板,看到 SQL 執行時間確實突然變得很長,如下所示:

sql-duration

小王根據經驗開始排查。他首先從監控上點開 TiKV 節點 CPU 佔用的監控——CPU 分佈很均勻,但各個 TiKV 的 Coprocessor 佔用率都很高。

tikv-coprocessor

小王知識水平很高,立刻意識到,可能是因爲有大查詢!於是他 SSH 到各個 TiDB 機器上,進入日誌目錄查看 slow log,確實看到了一波可疑的 SQL,它們都執行了很長的時間。

slow-log

小王挑了幾個 SQL 嘗試復現,但都未能成功,執行得很快。原來這些 SQL 只是受到影響的 SQL,集羣整體佔滿了導致它們運行緩慢。

翻慢日誌翻得即將頭暈眼花之際,小王終於找到一條 SQL 現在執行時間也需要很久。他非常 excited,使用 EXPLAIN 觀察了一下 SQL 的計劃,最終發現原來是有人誤操作刪除了一個索引,導致 TiDB 走了全表掃描。增加索引後,問題解決。幸好小王對診斷 TiDB 問題經驗豐富,匯聚多個線索、結合不同工具最終分析出了問題的根源,如果是新手肯定就跪了。

能不能查問題更方便一些?

TiDB 4.0 新提供 TiDB Dashboard 圖形化界面,內置各種有力工具方便 DBA 同學診斷、監視和管理集羣。

tidb-dashboard

之前的《 拍個 CT 診斷集羣熱點 》一文中介紹的 Key Visualizer 便是 TiDB Dashboard 包含的工具之一,它可以用於觀察業務模式的變化、快速直觀的查看熱點讀寫情況。除了 Key Visualizer 以外,TiDB Dashboard 還包含其他工具。接下來讓我們來看一下 TiDB Dashboard 都有哪些工具可以緩解上文小王同學的燃眉之急(我們後續還會對這些功能點進行詳細介紹,敬請期待)。

集羣診斷報告

選擇一個時間段,TiDB Dashboard 會生成一份診斷報告,直接告訴你集羣中有什麼已知的問題。也可以選擇兩個對比時間段,生成對比報告。

diagnose

集羣診斷報告是基於一系列預設規則進行的,會以配置、SQL 執行時間、各種監控、硬件情況等作爲依據。該功能目前尚處於非常早期的階段,涵蓋的規則還在不斷持續完善中。我們希望它能成長爲一個 DBA 得力的助手,讓沒有經驗的 DBA 同學也能擁有相關知識,快速地發現常見問題緣由。

在本文開頭的案例中,小王同學可以使用此工具,生成緩慢時候與正常時候的對比報告。報告中直接涵蓋之前正常運行、現在則顯著變慢了的 SQL,幫助小王同學快速抓到真兇。

compare-diagnose

SQL 語句分析(Statements)

選擇一個時間段,SQL 語句分析功能可以展示時間段內各個類型 SQL 的總時間佔比、單條時間佔比、掃的數據量等信息。在 Statements 中,僅僅是參數值不同、其他部分相同的 SQL 語句會被合併顯示在一起,使用者無需擔心他們成爲一堆零碎的 SQL 語句難以系統性地分析。

sql-statements

如果小王同學使用 Statements 功能,選擇時間段後,就可以直接按總執行時間或平均執行時間找到“肇事” SQL。

日誌搜索和導出

使用日誌搜索和導出功能,可以簡單地通過輸入關鍵字、選擇時間範圍、選擇日誌級別、選擇搜索組件這幾個步驟,批量地在 TiDB、TiKV 和 PD 節點上搜索和導出日誌。小王同學再也不需要手工 SSH 一臺一臺登錄服務器搜日誌了,一切只需點幾下鼠標。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-EC5Tk4L4-1585797239844)(https://download.pingcap.com/images/blog-cn/tidb-4.0-tidb-dashboard/8-log-output.gif)]

節點性能分析(Profiling)

該功能用於直接抓取 TiDB、TiKV 或 PD 節點的火焰圖情況。

profiling

火焰圖直觀顯示了進程在抓取時間內花在各個內部函數上的時間佔比,供高階用戶更好地知道節點當前主要在做什麼事情。

使用 TiDB Dashboard

TiDB Dashboard 在 TiDB 4.0 集羣的 PD 組件中直接內置,無需額外部署。目前 4.0 版本還未正式發佈,想要在本地快速體驗新版 TiDB 的同學可以使用我們新推出的 TiDB 快速部署工具 TiUP(可在官方網站 https://tiup.io 進一步瞭解詳情)。

使用 TiUP 可以一鍵在本地啓動 nightly 版本的測試集羣,支持 Mac 和 Linux:

$ tiup playground nightly --monitor

啓動測試集羣后,訪問以下地址即可體驗 TiDB Dashboard:

http://127.0.0.1:2379/dashboard

對於極端關注集羣穩定性的用戶,也可以選擇獨立部署 TiDB Dashboard,本文限於篇幅就不進行詳細介紹,可以閱讀 TiDB 電子書《TiDB in Action》的 TiDB Dashboard 章節 瞭解詳情(後續會持續更新),也歡迎大家反饋意見,掃描下方二維碼,添加 TiDB Robot 爲好友並回復“新特性”即可入羣交流:

qr-code

延展閱讀

TiDB 4.0 新特性前瞻(一)拍個 CT 診斷集羣熱點問題

TiDB 4.0 新特性前瞻(二)白話“悲觀鎖”

TiDB 4.0 新特性前瞻(三)再也不用擔心我的 SQL 突然變慢了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章