本文へ移動
Telemetry
データベースの信頼性 SQL レシピ

データベース接続プールの飽和状態を測定する

平均プール使用率、キューに入れられた取得待機、タイムアウト、およびアプリケーション サービスごとのアイドル容量を測定します。

初心者database_pool_samplesレビュー済み 2026-07-28テスト済み アパッチ DataFusion 45.2.0

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

質問に回答しました

どのアプリケーション プールが呼び出し元にデータベース接続を待たせていますか?

プールが満杯になっても自動的に異常が発生するわけではありませんが、継続的な使用率に加えてキューに入れられた呼び出し元と取得のタイムアウトは、データベース アクセスによってアプリケーションの作業が遅延していることを示す強力な兆候です。

イベント契約

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

フィールド種類なぜ存在するのか
timestamp_utcTimestampUTC でのプールのサンプル時間。
serviceUtf8プールを所有するアプリケーション サービス。
pool_nameUtf8安定した論理プール名。
active_connectionsInt64現在チェックアウトされている接続。
idle_connectionsInt64現在アイドル状態のオープン接続。
max_connectionsInt64構成された最大プール サイズ。
wait_msFloat64このサンプルで観察された接続取得待機。
timed_outBoolean取得がクライアントのタイムアウトを超えたかどうか。
environmentUtf8導入環境。
DataFusion SQL

クエリをコピーする

sql
SELECT
  service,
  pool_name,
  COUNT(*) AS samples,
  100.0 * AVG(active_connections)
    / NULLIF(MAX(max_connections), 0) AS average_utilization_pct,
  SUM(CASE WHEN wait_ms > 0 THEN 1 ELSE 0 END) AS waited_samples,
  100.0 * SUM(CASE WHEN wait_ms > 0 THEN 1 ELSE 0 END)
    / NULLIF(COUNT(*), 0) AS wait_rate_pct,
  AVG(wait_ms) AS average_wait_ms,
  SUM(CASE WHEN timed_out THEN 1 ELSE 0 END) AS timeouts
FROM database_pool_samples
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
  AND environment = 'production'
GROUP BY service, pool_name
HAVING COUNT(*) >= 10
ORDER BY wait_rate_pct DESC, average_utilization_pct DESC;

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

クエリ結果

接続取得待ち時間率

チェックアウト呼び出し元はサンプルの 3 分の 2 で待機し、取得タイムアウトも発生します。

servicepool_namesamplesaverage_utilization_pctwaited_sampleswait_rate_pctaverage_wait_mstimeouts
checkout-apiprimary1289.17866.67118.752
analytics-apireporting1245433.3312.50

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

Connection acquisition wait rate: Measure Database Connection-Pool Saturation 結果例からの合成 wait_rate_pct 値の静的チャート
決定論的な出力例のインデックス可能な SVG。記事、ランブック、または出典を明示した設計レビューのためにダウンロードしてください。

例を再現する

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

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

SQL の仕組み

  1. 1平均使用率は容量のコンテキストを提供しますが、単独で障害信号として使用されることはありません。
  2. 2待機サンプル率は、待機時間が短い場合でも呼び出し元が競合に遭遇する頻度を示します。
  3. 3平均により、接続を取得しない少数のリクエストのセットが隠蔽される可能性があるため、タイムアウトは明示的なままになります。

決定すべきエッジケース

  • サービス間でレートを比較する前に、サンプリング周波数を安定させておく必要があります。
  • サーバーレス同時実行により、多数の独立したプールを作成できます。集約によってその形状が非表示になる場合は、インスタンスまたはランタイム ディメンションを含めます。
  • プール サイズを増やすと、データベースに競合が発生する可能性があります。クライアント制限を変更する前にデータベース容量を確認してください。

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

  • バー: wait_rate_pct および average_utilization_pct (サービス別)
  • 傾向: アクティブ、アイドル、待機中の接続
  • 統計: 接続取得タイムアウト

アラートガイダンス

連続したサンプルにわたって待機率とタイムアウトが上昇したままの場合はアラートを発行し、プールを増やす前にデータベース容量を検証します。

アラート設定を読む

レシピを活用する

関連する機器とガイド

分析を続ける

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

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

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

API キーを取得する