Firebase Summit で発表されたすべての情報をご覧ください。Firebase を使用してアプリ開発を加速し、自信を持ってアプリを実行する方法を紹介しています。詳細

データベースパフォーマンスの監視

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

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

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

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

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

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

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

プロファイラー ツールの使用方法の詳細については、 「データベースのプロファイリング」を参照してください

Firebase コンソールを使用する

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

Cloud Monitoring を使用する

Google Cloud の Cloud Monitoring を使用すると、Metrics Explorer を使用して個々のパフォーマンス メトリックを表示したり、パフォーマンス メトリックのさまざまな組み合わせを経時的に表示するグラフを含むさまざまなダッシュボードを作成したりできます。 Realtime Database と Cloud 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_countおよびnetwork/sent_payload_and_protocol_bytes_count 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) によって分類できます。

必要に応じてルール評価の Cloud Monitoring チャートを調整します。たとえば、特定の評価結果、ALLOW、DENY、または ERROR でフィルタリングします。グラフの設定とカスタマイズについては、データベース使用状況の監視で説明されています。

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