TiDBモニタリングメトリクス
TiUPを使用してTiDBクラスタをデプロイする場合、監視システム(Prometheus&Grafana)が同時にデプロイされます。監視アーキテクチャについては、 TiDBモニタリングフレームワークの概要を参照してください。
Grafanaダッシュボードは、概要、PD、TiDB、TiKV、Node_exporter、ディスクパフォーマンスなどを含む一連のサブダッシュボードに分割されています。 TiDBダッシュボードは、TiDBパネルとTiDB要約パネルで構成されています。 2つのパネルの違いは、次の点で異なります。
- TiDBパネル:クラスタの異常をトラブルシューティングするための可能な限り包括的な情報を提供します。
- TiDB要約パネル:ユーザーが最も懸念しているTiDBパネル情報の一部を、いくつかの変更を加えて抽出します。これは、ユーザーが日常のデータベース操作で気にするデータ(QPS、TPS、応答遅延など)を提供します。これは、表示または報告される監視情報として機能します。
このドキュメントでは、TiDBダッシュボードに表示されるいくつかの主要な監視メトリックについて説明します。
主な指標の説明
TiDBダッシュボードに表示される主要なメトリックを理解するには、次のリストを確認してください。
クエリの概要
- 期間:実行時間
- クライアントのネットワーク要求がTiDBに送信されてから、TiDBが要求を実行した後に要求がクライアントに返されるまでの時間。一般に、クライアント要求はSQLステートメントの形式で送信され
COM_SLEEP
が、COM_PING
などのコマンドの実行時間を含めることもできCOM_STMT_FETCH
COM_SEND_LONG_DATA
- TiDBはマルチクエリをサポートしているため、
select 1; select 1; select 1;
などの複数のSQLステートメントの送信を一度にサポートします。この場合、このクエリの合計実行時間には、すべてのSQLステートメントの実行時間が含まれます。
- クライアントのネットワーク要求がTiDBに送信されてから、TiDBが要求を実行した後に要求がクライアントに返されるまでの時間。一般に、クライアント要求はSQLステートメントの形式で送信され
- 1秒あたりのコマンド:1秒あたりにTiDBによって処理されるコマンドの数。コマンド実行結果の成功または失敗に応じて分類されます。
- QPS:すべてのTiDBインスタンスで
SELECT
秒あたりに実行されるSQLステートメントの数INSERT
、およびその他のタイプのステートメントに従ってカウントされUPDATE
。 - インスタンス別のCPS:各TiDBインスタンスのコマンド統計。コマンド実行結果の成功または失敗に応じて分類されます。
- 失敗したクエリOPM:各TiDBインスタンスで1分あたりのSQLステートメントの実行時に発生したエラーに応じたエラータイプ(構文エラーや主キーの競合など)の統計。エラーが発生したモジュールとエラーコードが含まれています
- 低速クエリ:低速クエリの処理時間の統計(低速クエリ全体の時間コスト、コプロセッサーの時間コスト、およびコプロセッサースケジューリングの待機時間)。遅いクエリは、内部SQLステートメントと一般SQLステートメントに分類されます
- 接続アイドル期間:アイドル接続の期間
- 999/99/95/80期間:さまざまなタイプのSQLステートメント(さまざまなパーセンタイル)の実行時間の統計
- 期間:実行時間
クエリの詳細
- 期間80/95/99/999インスタンス別:各TiDBインスタンスでのSQLステートメントの実行時間の統計(異なるパーセンタイル)
- 失敗したクエリOPMの詳細:各TiDBインスタンスで1分あたりのSQLステートメントの実行時に発生したエラーに応じたエラータイプ(構文エラーや主キーの競合など)の統計
- 内部SQLOPS:TiDBクラスタ全体で1秒あたりに実行される内部SQLステートメント。内部SQLステートメントは内部で実行され、通常、ユーザーSQLステートメントまたは内部でスケジュールされたタスクによってトリガーされます。
サーバ
- 稼働時間:各TiDBインスタンスの実行時間
- メモリ使用量:各TiDBインスタンスのメモリ使用量統計。これは、プロセスによって占有されているメモリと、ヒープ上でGolangによって適用されているメモリに分割されます。
- CPU使用率:各TiDBインスタンスのCPU使用率の統計
- 接続数:各TiDBインスタンスに接続されているクライアントの数
- Open FD Count:各TiDBインスタンスの開かれたファイル記述子の統計
- 切断数:各TiDBインスタンスに切断されたクライアントの数
- イベントOPM:「開始」、「閉じる」、「グレースフルシャットダウン」、「キル」、「ハング」などの主要なイベントの統計
- Goroutine Count:各TiDBインスタンスのGoroutineの数
- ステートメント数の準備:各TiDBインスタンスで実行される
Prepare
のステートメントの数とそれらの総数 - Keep Alive OPM:各TiDBインスタンスで1分ごとにメトリックが更新される回数。通常、注意を払う必要はありません。
- パニックおよび重大なエラー:TiDBで発生したパニックおよび重大なエラーの数
- Time Jump Back OPS:オペレーティングシステムが各TiDBインスタンスで1秒ごとに巻き戻す回数
- トークン期間の取得:各接続でトークンを取得するための時間コスト
- ビンログカウントをスキップ:TiDBでのビンログ書き込みの失敗の数
- クライアントデータトラフィック:TiDBとクライアントのデータトラフィック統計
取引
- トランザクションOPS:1秒あたりに実行されたトランザクションの数
- 期間:トランザクションの実行期間
- トランザクションステートメント数:トランザクション内のSQLステートメントの数
- Transaction Retry Num:トランザクションが再試行する回数
- セッション再試行エラーOPS:1秒あたりのトランザクション再試行中に発生したエラーの数。このメトリックには、2つのエラータイプが含まれます。再試行の失敗と最大再試行回数の超過です。
- コミットトークン待機時間:トランザクションのコミット中のフロー制御キューでの待機時間。待機時間が長い場合は、コミットするトランザクションが大きすぎてフローが制御されていることを意味します。システムにまだ使用可能なリソースがある場合は、TiDB構成ファイルの
committer-concurrency
の値を増やすことで、コミットプロセスを高速化できます。 - KVトランザクションOPS:各TiDBインスタンス内で1秒あたりに実行されたトランザクションの数
- ユーザートランザクションは、内部メタデータの読み取り、ユーザートランザクションのアトミック再試行など、TiDBで複数のトランザクション実行をトリガーする場合があります。
- TiDBの内部でスケジュールされたタスクも、このパネルに含まれているトランザクションを介してデータベースで動作します
- KVトランザクション期間:各TiDB内でトランザクションを実行するために費やされた時間
- トランザクションリージョン数:トランザクションで操作されたリージョンの数
- Transaction Write KV Num Rate and Sum:KVが書き込まれるレートと、トランザクションで書き込まれたこれらのKVの合計
- Transaction Write KV Num:トランザクションで操作されたKVの数
- ステートメントロックキー:1つのステートメントのロックの数
- ハートビート送信期間:トランザクションがハートビートを送信する期間
- トランザクション書き込みサイズバイトレートと合計:トランザクションでバイトが書き込まれるレートと、これらの書き込まれたバイトの合計
- トランザクション書き込みサイズバイト:トランザクションで書き込まれるデータのサイズ
- 悲観的ロックの取得期間:ロックの追加にかかる時間
- TTLライフタイムリーチカウンター:TTLの上限に達したトランザクションの数。 TTL上限のデフォルト値は1時間です。これは、悲観的トランザクションの最初のロックまたは楽観的トランザクションの最初の事前書き込みから1時間が経過したことを意味します。 TTLの上限のデフォルト値は1時間です。 TTL寿命の上限は、TiDB構成ファイルの
max-txn-TTL
を変更することで変更できます。 - Load Safepoint OPS:
Safepoint
がロードされた回数。Safepoint
は、トランザクションがデータを読み取るときにSafepoint
より前のデータが読み取られないようにすることで、データの安全性を確保します。Safepoint
より前のデータはGCによってクリーンアップされる可能性があります - ペシミスティックステートメントの再試行OPS:ペシミスティックステートメントの再試行の回数。ステートメントがロックを追加しようとすると、書き込みの競合が発生する可能性があります。このとき、ステートメントは新しいスナップショットを取得し、ロックを再度追加します
- 1秒あたりのトランザクションタイプ:成功トランザクションと失敗トランザクションの両方を含む、2フェーズコミット(2PC)、非同期コミット、および1フェーズコミット(1PC)メカニズムを使用して1秒あたりにコミットされたトランザクションの数
エグゼキュータ
- 解析期間:SQLステートメントの解析時間の統計
- コンパイル期間:解析されたSQLASTを実行プランにコンパイルする時間の統計
- 実行時間:SQLステートメントの実行時間の統計
Hash Agg
Stream Agg
Sort
Index Look Up Join
Hash Join
など、Merge Join
秒あたりに多くのシステムリソースを消費するTopN
の統計- プランキャッシュOPSを使用したクエリ:1秒あたりのプランキャッシュを使用したクエリの統計
Distsql
- Distsql期間:Distsqlステートメントの処理時間
- Distsql QPS:Distsqlステートメントの統計
- Distsql部分QPS:毎秒の部分結果の数
- スキャンキー数:各クエリがスキャンするキーの数
- スキャンキーの部分番号:各部分結果がスキャンするキーの数
- 部分的な数値:各SQLステートメントの部分的な結果の数
KVエラー
- KVバックオフ期間:KV再試行要求が続く合計期間。 TiKVにリクエストを送信すると、TiDBでエラーが発生する場合があります。 TiDBには、TiKVへのすべての要求に対して再試行メカニズムがあります。この
KV Backoff Duration
の項目は、要求の再試行の合計時間を記録します。 - TiClientリージョンエラーOPS:TiKVによって返されたリージョン関連のエラーメッセージの数
- KVバックオフOPS:TiKVによって返されたエラーメッセージの数
- Lock Resolve OPS:ロックを解決するためのTiDB操作の数。 TiDBの読み取りまたは書き込み要求がロックに遭遇すると、ロックを解決しようとします
- その他のエラーOPS:ロックのクリアや更新を含むその他のタイプのエラーの数
SafePoint
- KVバックオフ期間:KV再試行要求が続く合計期間。 TiKVにリクエストを送信すると、TiDBでエラーが発生する場合があります。 TiDBには、TiKVへのすべての要求に対して再試行メカニズムがあります。この
KVリクエスト
- KVリクエストOPS:TiKVに従って表示されるKVリクエストの実行時間
- ストアごとのKVリクエスト期間99:TiKVに従って表示されるKVリクエストの実行時間
- タイプ別のKVリクエスト期間99:リクエストタイプに応じて表示されるKVリクエストの実行時間
PDクライアント
- PDクライアントCMDOPS:1秒あたりにPDクライアントによって実行されたコマンドの統計
- PDクライアントのCMD期間:PDクライアントがコマンドを実行するのにかかる時間
- PDクライアントCMD失敗OPS:PDクライアントによって1秒あたりに実行された失敗したコマンドの統計
- PD TSO OPS:TiDBが1秒あたりPDから取得するTSOの数
- PD TSO待機時間:TiDBがPDがTSOを返すのを待機する時間
- PD TSO RPC期間:TiDBが(TSOを取得するために)PDに要求を送信してからTiDBがTSOを受信するまでの期間
- TSO待機期間の開始:TiDBがPDに要求を送信してから(
start TSO
を取得するため)、TiDBがstart TSO
を受信するまでの期間
スキーマのロード
- スキーマのロード期間:TiDBがTiKVからスキーマを取得するのにかかる時間
- Load Schema OPS:TiDBがTiKVから1秒あたりに取得するスキーマの統計
- スキーマリースエラーOPM:スキーマリースエラーには、
change
とoutdate
の2つのタイプがあります。change
はスキーマが変更されたことを意味し、outdate
はスキーマを更新できないことを意味します。これはより深刻なエラーであり、アラートをトリガーします。 - Load Privilege OPS:TiDBがTiKVから1秒あたりに取得した特権情報の数の統計
DDL
- DDL期間95:DDLステートメント処理時間の95%分位
- インデックスのバッチ追加期間100:インデックスの作成に各バッチが費やした最大時間の統計
- DDL待機ジョブ数:待機しているDDLタスクの数
- DDL META OPM:DDLが1分ごとにMETAを取得する回数
- DDLワーカー期間99:各DDLワーカーの実行時間の99%分位数
- Syncerのデプロイ期間:Schema Version Syncerの初期化、再起動、および操作のクリアにかかる時間
- 所有者ハンドルシンクロ期間:DDL所有者がスキーマバージョンを更新、取得、および確認するのにかかる時間
- 自己バージョンの更新期間:SchemaVersionSyncerのバージョン情報を更新するためにかかる時間
- DDL OPM:1秒あたりのDDL実行数
- DDLインデックスの追加の進捗率(パーセンテージ):インデックスの追加の進捗状況
統計
- 自動分析期間95:自動
ANALYZE
で消費される時間 - 自動分析QPS:自動
ANALYZE
の統計 - 統計不正確率:統計不正確率の情報
- 疑似推定OPS:疑似統計を使用して最適化されたSQLステートメントの数
- ダンプフィードバックOPS:保存された統計フィードバックの数
- クエリフィードバックの保存QPS:TiDBメモリで実行されるユニオンクエリのフィードバック情報を保存するための1秒あたりの操作数
- 重要なフィードバック:統計情報を更新する重要なフィードバックの数
- 統計の更新OPS:フィードバックを使用して統計を更新する操作の数
- Fast Analyze Status 100:統計情報をすばやく収集するためのステータス
- 自動分析期間95:自動
オーナー
- 新しいETCDセッション期間95:新しいetcdセッションの作成にかかる時間。 TiDBは、etcdクライアントを介してPDのetcdに接続し、メタデータ情報を保存/読み取ります。これは、セッションの作成に費やされた時間を記録します
- オーナーウォッチャーOPS:DDLオーナーウォッチPDのetcdメタデータの1秒あたりのGoroutine操作の数
メタ
- AutoID QPS:3つの操作(グローバルID割り当て、単一テーブルAutoID割り当て、単一テーブルAutoIDリベース)を含むAutoID関連の統計
- AutoID期間:AutoID関連の操作にかかる時間
- リージョンキャッシュエラーOPS:TiDBにキャッシュされたリージョン情報が1秒あたりに発生したエラーの数
- メタオペレーション期間99:メタオペレーションのレイテンシー
GC
- ワーカーアクションOPM
delete\_range
run_job
resolve_lock
GC関連の操作の数 - 期間99:GC関連の操作に費やされた時間
- 構成:GCデータの寿命とGCの実行間隔の構成
- GC失敗OPM:失敗したGC関連操作の数
- 範囲の削除の失敗OPM:
Delete Range
が失敗した回数 - Too Many Locks Error OPM:GCがあまりにも多くのロックをクリアするエラーの数
- アクション結果OPM:GC関連の操作の結果の数
- 範囲タスクステータスの削除:完了と失敗を含む
Delete Range
のタスクステータス - プッシュタスク期間95:GCサブタスクをGCワーカーにプッシュするために費やされた時間
- ワーカーアクションOPM
バッチクライアント
- TiKVによる保留中のリクエスト数:処理を保留しているバッチメッセージの数
- バッチクライアント使用不可期間95:バッチクライアントの使用不可時間
- 使用可能な接続カウンターがありません:バッチクライアントが使用可能なリンクを見つけられなかった回数