本文へ移動
Telemetry
API の信頼性 SQL レシピ

p50、p95、p99 API レイテンシの計算

エンドポイントごとの中央値と末尾のレイテンシーを、DataFusion 互換のパーセンタイル SQL と比較します。

中級者api_requestsレビュー済み 2026-07-27テスト済み アパッチ DataFusion 45.2.0

レビュー者 Telemetry 製品チーム . SQL の互換性、イベント コントラクト、合成出力、および操作上の注意事項. 基準と所有権を確認する

質問に回答しました

テール レイテンシが最も悪いエンドポイントはどれですか?

平均値は、ユーザーが覚えている遅いリクエストを隠します。 p50、p95、および p99 を比較すると、エンドポイントが一貫して遅いのか、それとも少数のリクエストのセットが原因でロングテールが発生しているのかがわかります。

イベント契約

クエリが期待するフィールド

フィールド種類なぜ存在するのか
timestamp_utcTimestampリクエストの完了時刻 (UTC)。
route_templateUtf8安定したルート テンプレート。
latency_msFloat64リクエストの継続時間 (ミリ秒単位)。
status_codeInt64HTTP 応答ステータス コード。
DataFusion SQL

クエリをコピーする

sql
SELECT
  route_template,
  COUNT(*) AS requests,
  approx_percentile_cont(latency_ms, 0.50) AS p50_ms,
  approx_percentile_cont(latency_ms, 0.95) AS p95_ms,
  approx_percentile_cont(latency_ms, 0.99) AS p99_ms
FROM api_requests
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
  AND status_code < 500
GROUP BY route_template
HAVING COUNT(*) >= 50
ORDER BY p95_ms DESC
LIMIT 10;

この読み取り専用クエリは、空の型付きテーブルに対して計画され、実行されます。 アパッチ DataFusion 45.2.0。決定論的なサンプル出力は合成され、個別にレビューされます。フィールド タイプ、しきい値、ビジネス定義を独自のデータと照合して検証します。 テスト方法を読んでください。

クエリ結果

ルート別の p95 遅延

エクスポート リクエストのテールは最も遅く、通常のパフォーマンスと最悪の場合のパフォーマンスの差が最も大きくなります。

route_templaterequestsp50_msp95_msp99_ms
/api/reports/export50800800800
/api/projects/:id/sync50320320320
/api/search50120120120

合成出力例。運用上の決定に使用する前に、独自のイベント スキーマとしきい値に対してクエリを実行します。

p95 latency by route: Calculate p50, p95, and p99 API Latency 結果例からの合成 p95_ms 値の静的チャート
決定論的な出力例のインデックス可能な SVG。記事、ランブック、または出典を明示した設計レビューのためにダウンロードしてください。

例を再現する

パブリックフィクスチャをダウンロードする

JSON バンドルには、型付きイベント コントラクトが含まれています。 reproducible 入力行、正確な SQL、予想される出力、レビューメモ、およびエンジンのバージョン。 CSV には、表示された結果が含まれます。

SQL の仕組み

  1. 1approx_percentile_cont は、DataFusion の t-digest 実装を使用します。これは、大規模なイベント テーブルに効率的です。
  2. 25xx 応答をフィルターで除外すると、成功したリクエストのレイテンシー ビューになります。失敗期間が重要な場合は、別の失敗したリクエスト ビューを作成します。
  3. 3p50 と p95 の差は、どちらかの数値だけよりも役立つことがよくあります。広いギャップは断続的な低速パスを示します。

決定すべきエッジケース

  • ルート コンテキストを保持せずに、根本的に異なる作業を行うエンドポイントを比較しないでください。
  • ストリーミング ルートと長時間実行されるエクスポートには、別個のサービス レベル目標が必要になる場合があります。
  • レイテンシーを一貫した単位に保ち、数値フィールドを使用します。

推奨されるダッシュボード

  • グループ化されたバー: p50_ms および p95_ms by route_template
  • 折れ線グラフ: 最も遅いルートの時間の経過に伴う p95_ms
  • 表: ルートの p99 を超える個々のリクエスト

アラートガイダンス

大量のルートの p95 が 3 つの完全なタイム バケットのサービス目標を超えたときにアラートを送信します。

アラート設定を読む

レシピを活用する

関連する機器とガイド

ソースデータを定義する

この分析のイベント スキーマ

分析を続ける

実際のイベントで実行する

テーブルを作成し、フィールドを調整して、結果を保存します

無料で始めて、構造化されたイベントを送信し、クエリ結果をグラフ、共有ダッシュボード ウィジェット、またはアラート入力として使用します。

API キーを取得する