データベース パフォーマンスのモニタリング

Firebase Realtime Database のパフォーマンスをモニタリングし、アプリの潜在的な問題を特定するには、いくつかの方法があります。アプリの発着信の帯域幅と負荷を調べて、請求額を予想することもできます。さらに、何か問題があると思われる場合は、データベースのオペレーションを明確に把握することがトラブルシューティングに役立ちます。

このページでは、Realtime Database のパフォーマンス モニタリングについて説明します。使用状況のモニタリングについては、データベース使用状況のモニタリングをご覧ください。

Realtime Database モニタリング ツールを使用する

Realtime Database のパフォーマンスに関するデータを収集するには、必要な粒度に応じていくつかの異なるツールを使用します。

Realtime Database プロファイラ ツールを使用する

Realtime Database プロファイラ ツールは、データベースの読み取り / 書き込みオペレーションの概要をリアルタイムで提供します。このレポートには、インデックス付けされていないクエリに加えて、各オペレーションの速度とペイロード サイズに関する情報が含まれています。ただし、接続オーバーヘッドに関する履歴情報や統計情報は含まれていないため、料金の見積もりには使用しないでください

プロファイラ ツールの使用について詳しくは、データベースのプロファイルを作成するをご覧ください。

Firebase コンソールの使用

Firebase コンソールの [使用状況] タブには、データベースへの同時接続数、保存中のデータの量、送信帯域幅(プロトコルと暗号化のオーバーヘッドを含む)、データベースの負荷が 1 分間隔で表示されます。[使用状況] タブでは、データベースの全体的なパフォーマンスをより正確に把握できますが、パフォーマンスに関する潜在的な問題のトラブルシューティングを行うのに十分なレベルでドリルダウンできない場合があります。

Cloud Monitoring を使用する

Google CloudCloud Monitoring を使用すると、Metrics Explorer を使用して個々のパフォーマンス指標を表示できます。また、各種のパフォーマンス指標の組み合わせを時系列で表示するグラフを含むさまざまなダッシュボードを作成できます。Realtime DatabaseCloud Monitoring の統合では、最も細かい粒度でデータを取得できます。

Cloud Monitoring を設定する手順については、データベース使用状況のモニタリングをご覧ください。

特定の Cloud Monitoring の指標を使用してパフォーマンスの問題を発見するためのヒントについては、以降のセクションをご覧ください。

Cloud Monitoring でパフォーマンスをモニタリングする

稼働時間やレイテンシなどのパフォーマンスに関する問題が発生した場合は、Cloud Monitoring を使用して以下の指標をモニタリングできます。すべての指標タイプ名には firebasedatabase.googleapis.com/ という接頭辞が付きます。

指標名 説明
データベースの負荷

io/database_load。この指標を使用して、利用可能なデータベース帯域幅のどの程度がリクエストの処理に使用されているかを時系列でモニタリングできます。データベースの負荷が利用可能な帯域幅の総量に近づくと、パフォーマンスの問題が発生する可能性があります。負荷が最も高いオペレーションのタイプを確認し、それに応じてトラブルシューティングを行うこともできます。1 分を超えるオペレーションでは、100% を超える負荷が報告される場合があります。これは、数分にわたって使用された帯域幅の合計が、オペレーションが完了した後の 1 分間のレポート間隔にまとめられた場合に発生します。

超過によるネットワーク無効化

network/disabled_for_overages。この指標は、Realtime Database がいずれかの帯域幅かネットワーク制限を超えたときに発生した機能停止を反映しています。

超過によるストレージ無効化

storage/disabled_for_overages。この指標は、Realtime Database がストレージ上限を超えたときに発生した機能停止を反映しています。

有用な知見と概要を得るには、ダッシュボードのグラフに表示する指標を組み合わせます。たとえば、次のような組み合わせが考えられます。

  • オペレーション: io/database_load 指標を使用して、各オペレーション タイプで使用されているデータベースの負荷の総量を確認できます。io/database_load をオペレーション タイプでグループ化し、タイプごとにトラブルシューティングを行うようにしてください。
  • ストレージ: storage/limitstorage/total_bytes を使用して、ストレージの使用率を Realtime Database ストレージ制限と関連させながらモニタリングできます。また、storage/disabled_for_overages を追加して、ストレージ制限の超過によってアプリのダウンタイムが発生したかどうかを確認することもできます。
  • SSL オーバーヘッド: network/https_requests_count を使用して、データベースが受信した SSL 接続リクエストの数をモニタリングし、reused_ssl_session フィルタを使用して既存の SSL セッション チケットを再利用したリクエストを割り出すことができます。これを network/sent_bytes_countnetwork/sent_payload_and_protocol_bytes_count に照らして測定し、アプリが SSL セッション チケットを効率的に使用しているかどうかをモニタリングできます。

Cloud Monitoring を使用してアラートを設定し、Realtime Database 指標に基づいて通知を受け取ることもできます。たとえば、io/database_load が特定のしきい値に近づいている場合に通知を受け取ることができます。

Cloud Monitoring で使用可能な Realtime Database 指標の完全なリストをご覧ください。

データベースの負荷の種類

io/database_load 指標は、負荷をもたらしたオペレーション タイプのラベルも示します。測定される可能性のあるオペレーション タイプは次のとおりです。

  • admin: ルールの設定やプロジェクト メタデータの読み込みなどの管理オペレーションです。
  • auth: サービス アカウントからの認証または単一アカウントの Firebase Authentication を確認します。
  • client_management: 同時接続の追加や削除を処理します。これには、削除時の切断オペレーションも含まれます。
  • get_shallow: shallow=true を設定して REST GET からデータを取得します。
  • get: REST GET オペレーションを処理します。
  • listen: 接続されたクライアントから、on オペレーションおよび once オペレーションの初期データを取得します。
  • on_disconnect: クライアントからの切断オペレーション時に登録します。
  • put: クライアントからの set オペレーションまたは REST PUT オペレーションを処理します。
  • transaction: 条件付き REST リクエストからのトランザクションまたはクライアントからの transaction オペレーションを実行します。
  • update: update オペレーションまたは REST PATCH リクエストを処理します。

Cloud Monitoring でセキュリティ ルールをモニタリングする

セキュリティ ルールの評価を分析することもできます。すべての指標タイプ名には firebasedatabase.googleapis.com/ という接頭辞が付きます。

指標名 説明
ルール評価 rules/evaluation_count。書き込みまたは読み取りリクエストに応答して実行された Realtime Database ルールの評価数。この指標はリクエストの結果(ALLOW、DENY、ERROR)で分類できます。

必要に応じて、特定の評価結果、ALLOW、DENY、ERROR でフィルタリングして、ルールの評価に関する Cloud Monitoring グラフを調整します。グラフの設定とカスタマイズについては、データベース使用状況のモニタリングをご覧ください。

Cloud Monitoring で使用可能な Realtime Database 指標の完全なリストをご覧ください。