このページでは、Performance Monitoring を開始するため、または Performance Monitoring の機能とツールを使用するためのトラブルシューティングのヒントを提供します。
トラブルシューティングの最初のチェック
次の 2 つのチェックは、さらにトラブルシューティングを行う前に推奨される一般的なベスト プラクティスです。
1. パフォーマンス イベントのログ メッセージを確認する
ログ メッセージをチェックして、Performance Monitoring SDK がパフォーマンス イベントをキャプチャしていることを確認してください。
次のように、デバッグ ロギングを有効にします。
- Xcode (最小 v13.3.1) で、[ Product ] > [ Scheme ] > [ Edit scheme ] を選択します。
- 左側のメニューから [実行] を選択し、[引数] タブを選択します。
- [起動時に渡される引数] セクションで、
-FIRDebugEnabled
を追加します。
ログ メッセージでエラー メッセージを確認します。
Performance Monitoring は、ログ メッセージをフィルタリングできるように、ログ メッセージに
Firebase/Performance
のタグを付けます。Performance Monitoring がパフォーマンス イベントをログに記録していることを示す次の種類のログを確認します。
-
Logging trace metric: TRACE_NAME , FIREBASE_PERFORMANCE_CONSOLE_URL
-
Logging network request trace: URL
-
URL をクリックして、Firebase コンソールでデータを表示します。ダッシュボードでデータが更新されるまで、少し時間がかかる場合があります。
アプリがパフォーマンス イベントをログに記録していない場合は、トラブルシューティングのヒントを確認してください。
2. Firebase ステータス ダッシュボードを確認する
Firebase または Performance Monitoring の既知の停止がある場合は、 Firebase ステータス ダッシュボードを確認してください。
パフォーマンス監視の開始
Performance Monitoring ( iOS+ | Android | Web ) の使用を開始する場合、次のトラブルシューティングのヒントは、Firebase が SDK を検出する、または Firebase コンソールに最初のパフォーマンス データを表示することに関連する問題に役立ちます。
Firebase は、アプリからイベント情報 (アプリ インタラクションなど) を受け取ると、Performance Monitoring SDK がアプリに正常に追加されたかどうかを検出できます。通常、アプリを起動してから 10 分以内に、Firebase コンソールのパフォーマンスダッシュボードに「SDK が検出されました」というメッセージが表示されます。その後、30 分以内に、ダッシュボードに最初に処理されたデータが表示されます。
最新バージョンの SDK をアプリに追加してから 10 分以上経過しても変化が見られない場合は、ログ メッセージをチェックして、Performance Monitoring がイベントをログに記録していることを確認してください。以下に説明されている適切なトラブルシューティング手順を試して、遅れた SDK 検出メッセージのトラブルシューティングを行ってください。
まだローカルで開発している場合は、データ収集用のイベントをさらに生成してみてください。
シミュレーターまたはテスト デバイスを使用してアプリの開発を続けます。
アプリのバックグラウンドとフォアグラウンドを数回切り替えたり、画面間を移動してアプリを操作したり、ネットワーク リクエストをトリガーしたりして、イベントを生成します。
Firebase 構成ファイル(
Google-Service-Info.plist
) がアプリに正しく追加され、ファイルが変更されていないことを確認してください。具体的には、次の点を確認してください。構成ファイル名には、
(2)
のような追加の文字は追加されません。構成ファイルは XCode プロジェクトのルートにあり、正しいターゲットに追加されます。
構成ファイルにリストされている Firebase Apple アプリ ID (
GOOGLE_APP_ID
) は、アプリに対して正しいものです。 Project settingsのYour appsカードで Firebase アプリ ID を見つけます。
アプリの構成ファイルに何か問題があると思われる場合は、次のことを試してください。
現在アプリにある構成ファイルを削除します。
次の手順に従って、新しい構成ファイルをダウンロードし、Apple アプリに追加します。
SDK がイベントをログに記録し、すべてが正しく設定されているように見えても、SDK 検出メッセージまたは処理されたデータが表示されない場合 (2 時間後)、 Firebase サポートにお問い合わせください。
Info.plist
ファイルで次のいずれかのフラグを使用して、 Performance Monitoring SDK が無効になっていないことを確認してください。-
firebase_performance_collection_enabled
-
firebase_performance_collection_deactivated
-
アプリで無効になっているものが見つからない場合は、 Firebase サポートにお問い合わせください。
Performance Monitoring は、パフォーマンス イベント データを処理してから、パフォーマンスダッシュボードに表示します。
「SDK が検出されました」というメッセージが表示されてから 24 時間以上経過してもデータが表示されない場合は、既知の停止がないかFirebase ステータス ダッシュボードを確認してください。停止がない場合は、 Firebase サポートにお問い合わせください。
一般的なトラブルシューティング
SDK を正常に追加し、アプリで Performance Monitoring を使用している場合、次のトラブルシューティングのヒントは、Performance Monitoring の機能とツールに関連する一般的な問題に役立ちます。
パフォーマンス イベントのログ メッセージが表示されない場合は、次のトラブルシューティング手順を試してください。
Info.plist
ファイルで次のいずれかのフラグを使用して、 Performance Monitoring SDK が無効になっていないことを確認してください。-
firebase_performance_collection_enabled
-
firebase_performance_collection_deactivated
-
アプリで無効になっているものが見つからない場合は、 Firebase サポートにお問い合わせください。
画面レンダリング トレースのデータが欠落している場合は、次のトラブルシューティング手順を試してください。
最新バージョンの Apple プラットフォーム SDK (v10.4.0) を使用していることを確認してください。画面レンダリング トレースは、v5.0.0 以降でのみ使用できます。
Performance Monitoring は、コンテナー ビュー コントローラー (
UINavigationController
やUITabBarController
など) の画面レンダリング トレースを作成しません。これらの画面でのみデータが欠落している場合、これは予期された動作です。
自動収集されたトレースのパフォーマンス データは表示されますが、カスタム コード トレースのパフォーマンス データは表示されませんか?次のトラブルシューティング手順を試してください。
Trace APIを介してインストルメント化されたカスタム コード トレースの設定、特に以下を確認します。
- カスタム コード トレースとカスタム メトリクスの名前は、次の要件を満たす必要があります: 先頭または末尾に空白がないこと、先頭にアンダースコア (
_
) 文字がないこと、および最大長が 32 文字であること。 - すべてのトレースを開始および停止する必要があります。開始されていない、停止されていない、または開始前に停止されたトレースはログに記録されません。
- カスタム コード トレースとカスタム メトリクスの名前は、次の要件を満たす必要があります: 先頭または末尾に空白がないこと、先頭にアンダースコア (
ログ メッセージをチェックして、Performance Monitoring が予想されるカスタム コード トレースをログに記録していることを確認します。
Performance Monitoring がイベントをログに記録しているが、24 時間経過してもデータが表示されない場合は、 Firebase サポートにお問い合わせください。
ネットワーク リクエスト データが見つからない場合は、次のトラブルシューティング手順を試してください。
ネットワーク ライブラリの非互換性を確認します。 Performance Monitoring は、次のネットワーク ライブラリを使用するネットワーク リクエストの指標を自動的に収集します。
- Swift の場合: URLSession および URLConnection
- Objective-C の場合: NSURLSession および NSURLConnection
ネットワーク リクエストのカスタム モニタリングを追加できることに注意してください。
次の点に注意してください。
コードとコードで使用されるネットワーク ライブラリの動作によっては、Performance Monitoring は完了したネットワーク リクエストのみを報告する場合があります。これは、開いたままの HTTP/S 接続が報告されない可能性があることを意味します。
Performance Monitoring は、無効な
Content-Type
ヘッダーを含むネットワーク リクエストについては報告しません。ただし、Content-Type
ヘッダーのないネットワーク リクエストは引き続き受け入れられます。
Performance Monitoring が URL パターンに基づいてネットワーク リクエスト データを集計する方法の詳細をご覧ください。
カスタム URL パターンを試すこともできます。
よくある質問
最近導入されたアラートのフォローアップとして、上位の問題を最近のアラートに置き換えました。アラートは、設定したしきい値を超えたときに自動的に通知します。問題は廃止され、アラートに置き換えられました。
[パフォーマンス] カードの上部にあるアプリ セレクターは、[最近のアラート] の下のアラート エントリをフィルター処理します。選択したアプリの最新の 3 つのアラートのみが表示されます。
アラートの詳細については、「パフォーマンスの問題に関するアラートを設定する」を参照してください。
Performance Monitoring は、定義されたしきい値を超えるメトリックのアラートをサポートしています。これらの設定可能なパフォーマンス メトリックのしきい値との混同を避けるため、問題のしきい値を設定する機能を削除しました。
問題のトラブルシューティング方法を改善するために、[詳細] ページと [メトリック] ページを新しく再設計された一元化されたユーザー インターフェイス (UI) に置き換えました。この新しいトラブルシューティング UI は、詳細とメトリクスが提供するのと同じコア機能を提供します。トラブルシューティングの詳細については、特定のトレースの詳細データを表示する を参照してください。
Performance Monitoring は、アプリのユーザー デバイスからパフォーマンス データを収集します。アプリケーションに多くのユーザーがいる場合、またはアプリが大量のパフォーマンス アクティビティを生成する場合、パフォーマンス モニタリングはデータ収集をデバイスのサブセットに制限して、処理されるイベントの数を減らすことがあります。これらの制限は十分に高いため、イベントが少なくても、メトリック値はユーザーのアプリ エクスペリエンスを表しています。
収集するデータ量を管理するために、Performance Monitoring は次のサンプリング オプションを使用します。
オンデバイス レート制限: デバイスがトレースの突然のバーストを送信するのを防ぐために、デバイスから送信されるコードおよびネットワーク リクエスト トレースの数を 10 分ごとに 300 イベントに制限します。このアプローチにより、大量のパフォーマンス データを送信できるループ インストルメンテーションからデバイスを保護し、1 つのデバイスがパフォーマンス測定値を歪めるのを防ぎます。
動的サンプリング: Performance Monitoring は、すべてのアプリ ユーザーのアプリごとに、コード トレースで約 1 億イベント、ネットワーク リクエスト トレースで 1 億イベントを収集します。デバイスでダイナミック サンプリング レートが取得され(Firebase Remote Config を使用)、ランダムなデバイスがトレースをキャプチャして送信する必要があるかどうかが判断されます。サンプリング対象として選択されていないデバイスは、イベントを送信しません。動的サンプリング レートはアプリ固有であり、収集されたデータの全体量が制限を下回るように調整されます。
ユーザー セッションは、ユーザーのデバイスから追加の詳細データを送信するため、データをキャプチャして送信するためにより多くのリソースが必要になります。ユーザー セッションの影響を最小限に抑えるために、Performance Monitoring はセッション数も制限する場合があります。
サーバー側のレート制限: アプリがサンプリング制限を超えないようにするために、Performance Monitoring はサーバー側のサンプリングを使用して、デバイスから受信した一部のイベントを破棄する場合があります。このタイプの制限によって指標の有効性が変わることはありませんが、次のような小さなパターンの変化が生じる可能性があります。
- トレースの数は、コードの一部が実行された回数とは異なる場合があります。
- コード内で密接に結合されているトレースは、それぞれ異なる数のサンプルを持つ場合があります。
[問題] タブが、設定したしきい値を超えたときに自動的に通知されるアラートの導入に置き換えられました。しきい値のステータスを判断するために、Firebase コンソールを手動で確認する必要がなくなりました。アラートの詳細については、「パフォーマンスの問題に関するアラートを設定する」を参照してください。
Firebase コンソールの [パフォーマンス モニタリング] セクションを再設計し、[ダッシュボード] タブに主要な指標とすべてのトレースが 1 つのスペースに表示されるようにしました。再設計の一環として、デバイスとネットワークのページを削除しました。
[ダッシュボード] タブの下部にあるトレース テーブルには、[デバイス上] および [ネットワーク] タブに表示されたものと同じ情報がすべて表示されますが、特定のメトリックの変化率でトレースを並べ替える機能など、いくつかの機能が追加されています。特定のトレースのすべてのメトリックとデータを表示するには、トレース テーブルでトレース名をクリックします。
トレース テーブルの次のサブタブでトレースを表示します。
- ネットワーク リクエスト トレース (標準とカスタムの両方) — [ネットワーク リクエスト] サブタブ
- カスタム コード トレース —カスタム トレースサブタブ
- アプリの開始、フォアグラウンドのアプリ、バックグラウンドのアプリのトレース —カスタム トレースサブタブ
- 画面レンダリング トレース —画面レンダリングサブタブ
- ページ ロード トレース —ページ ロードサブタブ
トレース テーブルと表示メトリックとデータの詳細については、コンソールの概要ページ ( iOS+ | Android | Web ) にアクセスしてください。
スロー レンダリング フレームとフリーズ フレームは、デバイスのリフレッシュ レートを 60Hz と想定して計算されています。デバイスのリフレッシュ レートが 60 Hz より低い場合、1 秒あたりのレンダリング フレーム数が少なくなるため、各フレームのレンダリング時間が遅くなります。レンダリング時間が遅くなると、より多くのフレームがより遅くレンダリングされるかフリーズするため、より多くの遅いフレームまたはフリーズしたフレームが報告される可能性があります。ただし、デバイスのリフレッシュ レートが 60Hz よりも高い場合、各フレームのレンダリング時間は速くなります。これにより、報告される低速フレームまたはフリーズ フレームが少なくなる可能性があります。これは、Performance Monitoring SDK の現在の制限です。
Firebase Performance Monitoring の BigQuery 統合を有効にしている場合、データは 1 日の終わり (太平洋時間) から 12~24 時間後に BigQuery にエクスポートされます。
たとえば、4 月 19 日のデータは、4 月 20 日の午後 12 時から午前 0 時までの間に BigQuery で利用できるようになります (日付と時刻はすべて太平洋時間です)。
Near real-time data processing and display
Firebase Performance Monitoring processes collected performance data as it comes in, which results in near real-time data display in the Firebase console. Processed data displays in the console within a few minutes of its collection, hence the term "near real-time".
To take advantage of near real-time data processing, make sure your app uses a real-time compatible SDK version .
To take advantage of near real-time data processing, you only need to make sure that your app uses a Performance Monitoring SDK version that's compatible with real-time data processing.
These are the real-time compatible SDK versions:
- iOS — v7.3.0 or later
- tvOS — v8.9.0 or later
- Android — v19.0.10 or later (or Firebase Android BoM v26.1.0 or later)
- Web — v7.14.0 or later
Note that we always recommend using the latest version of SDK, but any version listed above will enable Performance Monitoring to process your data in near real time.
These are the SDK versions compatible with real-time data processing:
- iOS — v7.3.0 or later
- tvOS — v8.9.0 or later
- Android — v19.0.10 or later (or Firebase Android BoM v26.1.0 or later)
- Web — v7.14.0 or later
Note that we always recommend using the latest version of SDK, but any version listed above will enable Performance Monitoring to process your data in near real time.
If your app doesn't use a real-time compatible SDK version, you will still see all your app's performance data in the Firebase console. However, the display of performance data will be delayed by roughly 36 hours from the time of its collection.
Yes! Regardless of which SDK version an app instance uses, you'll see performance data from all your users.
However, if you're looking at recent data (less than roughly 36 hours old), then the displayed data is from users of app instances using a real-time compatible SDK version. The non-recent data, though, includes performance data from all versions of your app.
Contacting Firebase Support
If you reach out to Firebase Support , always include your Firebase App ID. Find your Firebase App ID in the Your apps card of your Project settings .