TiFlash のパフォーマンス分析とチューニング方法

このドキュメントでは、 TiFlashリソースの使用率と主要なパフォーマンス メトリックを紹介します。パフォーマンス概要ダッシュボードのTiFlashパネルを通じて、 TiFlashクラスターのパフォーマンスを監視および評価できます。

TiFlashクラスタのリソース使用率

次の 3 つのメトリックを使用すると、 TiFlashクラスターのリソース使用率をすぐに取得できます。

  • CPU: TiFlashインスタンスごとの CPU 使用率。
  • メモリ: TiFlashインスタンスごとのメモリ使用量。
  • IO 使用率: TiFlashインスタンスごとの IO 使用率。

例: CH-benCHmark ワークロードのリソース使用率

このTiFlashクラスターは 2 つのノードで構成され、各ノードは 16 個のコアと 48 GB のメモリで構成されています。CH-benCHmark ワークロード中、CPU 使用率は最大 1500%、メモリ使用量は最大 20 GB、IO 使用率は最大 91% に達することがあります。これらのメトリックは、 TiFlashノードのリソースが飽和状態に近づいていることを示しています。

CH-TiFlash-MPP

TiFlashパフォーマンスの主要指標

スループットメトリック

次のメトリックを使用すると、 TiFlashのスループットを取得できます。

  • MPP クエリ数: 各TiFlashインスタンスの MPP クエリ数の瞬間値。TiFlashTiFlashで処理する必要がある現在の MPP クエリ数 (処理中のクエリとスケジュール待ちのクエリを含む) を反映します。
  • リクエスト QPS: すべてのTiFlashインスタンスによって受信されたコプロセッサ要求の数。
    • run_mpp_task dispatch_mpp_task mpp_establish_conn要求です。
    • batch : バッチリクエストの数。
    • cop : コプロセッサ インターフェイスを介して直接送信されるコプロセッサ要求の数。
    • cop_execution : 現在実行中のコプロセッサ要求の数。
    • remote_read remote_read_sentリモート読み取り関連のメトリックです。リモート読み取りのremote_read_constructedは通常、システムに問題があることを示します。
  • Executor QPS: すべてのTiFlashインスタンスが受信したリクエスト内の各タイプの DAG 演算子の数table_scanはテーブル スキャン演算子、 selectionは選択演算子、 aggregationは集約演算子、 top_nは TopN 演算子、 limitは制限演算子、 joinは結合演算子、 exchange_senderはデータ送信演算子、 exchange_receiverデータ受信演算子です。

レイテンシ指標

次のメトリックを使用すると、 TiFlashのレイテンシーを取得できます。

  • リクエスト期間の概要: すべてのTiFlashインスタンスにおけるすべてのリクエスト タイプの 1 秒あたりの合計処理期間の積み上げグラフを提供します。

    • リクエストのタイプがrun_mpp_taskdispatch_mpp_task 、またはmpp_establish_connの場合、SQL ステートメントの実行がTiFlashに部分的または完全にプッシュダウンされたことを示します。これには通常、結合およびデータ分散操作が含まれます。これは、 TiFlashで最も一般的なリクエスト タイプです。

    • リクエストのタイプがcopの場合、このリクエストに関連するステートメントがTiFlashに完全にプッシュダウンされていないことを示します。通常、TiDB はデータ アクセスとフィルタリングのためにテーブル フル スキャン オペレーターをTiFlashにプッシュダウンします。積み上げチャートでcop最も一般的なリクエスト タイプになった場合は、それが妥当かどうかを確認する必要があります。

      • SQL ステートメントによって照会されるデータの量が大きい場合、オプティマイザーはコスト モデルに従ってTiFlashフル テーブル スキャンの方がコスト効率が高いと見積もる場合があります。
      • クエリ対象のテーブルのスキーマに適切なインデックスがない場合、クエリ対象のデータ量が少ない場合でも、オプティマイザーはクエリをTiFlashにプッシュしてテーブル全体をスキャンすることしかできません。この場合、適切なインデックスを作成し、TiKV を介してデータにアクセスする方が効率的です。
  • 要求期間: すべてのTiFlashインスタンス内の各 MPP およびコプロセッサ要求タイプの合計処理期間。これには平均レイテンシーと p99レイテンシーが含まれます。

  • リクエスト処理期間: copbatch copのリクエストの実行開始から実行完了までの時間 (待機時間を除く)。このメトリックは、平均レイテンシと P99レイテンシーを含むcopbatch copのタイプのリクエストにのみ適用されます。

例1: TiFlash MPPリクエストの処理時間の概要

次の図のワークロードでは、 run_mpp_taskmpp_establish_connリクエストが合計処理時間の大部分を占めており、リクエストのほとんどが実行のためにTiFlashに完全にプッシュダウンされる MPP タスクであることがわかります。

copリクエストの処理時間は比較的短いため、リクエストの一部はデータ アクセスとコプロセッサを介したフィルタリングのためにTiFlashにプッシュダウンされていることがわかります。

CH-TiFlash-MPP

例2: TiFlash copリクエストが総処理時間の大部分を占める

次の図のワークロードでは、 copリクエストが全体の処理時間の大部分を占めています。この場合、SQL 実行プランをチェックして、これらのcopリクエストが生成された理由を確認できます。

Cop

次のメトリックを使用して、 TiFlashのRaftレプリケーション ステータスを取得できます。

  • Raft待機インデックス期間: すべてのTiFlashインスタンスのローカルリージョンインデックスがread_indexになるまで待機する期間。これは、 wait_indexの操作のレイテンシーを表します。このメトリックが高すぎる場合は、TiKV からTiFlashへのデータ レプリケーションにかなりのレイテンシーがあることを示しています。考えられる理由は次のとおりです。

    • TiKV リソースが過負荷になっています。
    • TiFlashリソース、特に IO リソースが過負荷になっています。
    • TiKV とTiFlashの間にネットワークのボトルネックがあります。
  • Raftバッチ読み取りインデックス期間: すべてのTiFlashインスタンスのレイテンシーはread_indexです。このメトリックが高すぎる場合は、 TiFlashと TiKV 間のやり取りが遅いことを示しています。考えられる理由は次のとおりです。

    • TiFlashリソースが過負荷になっています。
    • TiKV リソースが過負荷になっています。
    • TiFlashと TiKV の間にネットワークのボトルネックがあります。

IOスループットメトリクス

次のメトリックを使用すると、 TiFlashの IO スループットを取得できます。

  • インスタンスごとの書き込みスループット: 各TiFlashインスタンスによって書き込まれるデータのスループット。これには、 Raftデータ ログとRaftスナップショットを適用した場合のスループットが含まれます。

  • 書き込みフロー: すべてのTiFlashインスタンスによるディスク書き込みのトラフィック。

    • ファイル記述子: TiFlashで使用される DeltaTreestorageエンジンの安定したレイヤー。
    • Page: TiFlashで使用される DeltaTreestorageエンジンの Delta 変更レイヤーである Pagestore を指します。
  • 読み取りフロー: すべてのTiFlashインスタンスのディスク読み取り操作のトラフィック。

    • ファイル記述子: TiFlashで使用される DeltaTreestorageエンジンの安定したレイヤー。
    • Page: TiFlashで使用される DeltaTreestorageエンジンの Delta 変更レイヤーである Pagestore を指します。

(Read flow + Write flow) ÷ total Write Throughput By Instance式を使用して、 TiFlashクラスター全体の書き込み増幅係数を計算できます。

例1: セルフホスト環境におけるRaftとIOメトリクスCH-benCHmark ワークロード

次の図に示すように、このTiFlashクラスターのRaft Wait Index Durationパーセンタイルと 99 パーセンタイルのRaft Batch Read Index Duration 、それぞれ 3.24 秒と 753 ミリ秒と比較的高くなっています。これは、このクラスターのTiFlashワークロードが高く、データ レプリケーションでレイテンシーが発生するためです。

このクラスターには、2 つのTiFlashノードがあります。TiKV からTiFlashへの増分データ複製速度は、約 28 MB/秒です。安定レイヤー(ファイル記述子) の最大書き込みスループットは 939 MB/秒、最大読み取りスループットは 1.1 GiB/秒です。一方、デルタレイヤー(ページ) の最大書き込みスループットは 74 MB/秒、最大読み取りスループットは 111 MB/秒です。この環境では、 TiFlash は強力な IO スループット機能を備えた専用の NVME ディスクを使用します。

CH-2TiFlash-OP

例2: パブリッククラウド展開環境におけるCH-benCHmark ワークロードのRaftとIOメトリック

次の図に示すように、 Raft Wait Index Durationの 99 パーセンタイルは最大 438 ミリ秒、 Raft Batch Read Index Durationの 99 パーセンタイルは最大 125 ミリ秒です。このクラスターにはTiFlashノードが 1 つだけあります。TiKV は、1 秒あたり約 5 MB の増分データをTiFlashに複製します。安定レイヤー(ファイル記述子) の最大書き込みトラフィックは 78 MB/秒、最大読み取りトラフィックは 221 MB/秒です。一方、デルタレイヤー(ページ) の最大書き込みトラフィックは 8 MB/秒、最大読み取りトラフィックは 18 MB/秒です。この環境では、 TiFlash はIO スループットが比較的弱い AWS EBS クラウド ディスクを使用します。

CH-TiFlash-MPP

このページは役に立ちましたか?