Performance Monitoring 疑難排解與常見問題


本頁面提供疑難排解提示,協助您開始使用 Performance MonitoringPerformance Monitoring 功能和工具。

首先檢查疑難排解問題

以下兩項檢查是一般最佳做法,建議您在進一步排除問題前先進行檢查。

1. 檢查成效事件的記錄訊息

請檢查記錄訊息,確認 Performance Monitoring SDK 是否擷取了效能事件。

  1. 在建構期間啟用 Performance Monitoring 的偵錯記錄功能,方法是在應用程式的 AndroidManifest.xml 檔案中新增 <meta-data> 元素,如下所示:

    <application>
        <meta-data
          android:name="firebase_performance_logcat_enabled"
          android:value="true" />
    </application>
  2. 檢查記錄訊息,瞭解是否有任何錯誤訊息。

  3. Performance Monitoring 會使用 FirebasePerformance 標記記錄訊息。您可以使用 logcat 篩選功能,執行下列指令,即可查看持續時間追蹤記錄和 HTTP/S 網路要求記錄:

    adb logcat -s FirebasePerformance
  4. 請檢查下列類型的記錄,瞭解 Performance Monitoring 是否正在記錄效能事件:

    • Logging trace metric: TRACE_NAME, FIREBASE_PERFORMANCE_CONSOLE_URL
    • Logging network request trace: URL
  5. 按一下網址,即可在 Firebase 控制台中查看資料。資料可能需要幾分鐘的時間才會更新至資訊主頁。

如果應用程式未記錄成效事件,請參閱疑難排解提示

2. 查看 Firebase 狀態資訊主頁

如有已知的 Firebase 或 Performance Monitoring 中斷情形,請查看 Firebase 狀態資訊主頁

開始使用 Performance Monitoring

如果您剛開始使用 Performance Monitoring (iOS+ | Android | Web),下列疑難排解提示可協助解決 Firebase 偵測 SDK 或在 Firebase 主控台顯示首批成效資料的問題。

Firebase 會在收到應用程式事件資訊 (例如應用程式互動) 時,偵測您是否已成功將 Performance Monitoring SDK 新增至應用程式。通常在啟動應用程式後的 10 分鐘內,Firebase 控制台的效能資訊主頁會顯示「偵測到 SDK」訊息。然後在 30 分鐘內,資訊主頁會顯示初始處理的資料。

如果您在應用程式中加入最新版 SDK 後,超過 10 分鐘仍未看到任何變更,請查看記錄訊息,確認 Performance Monitoring 是否正在記錄事件。請嘗試下列適當的疑難排解步驟,排解 SDK 偵測訊息延遲的問題。

  1. 請確認您使用的是 Performance Monitoring Android SDK 19.1.0 以上版本 (或 Firebase BoM 26.3.0 以上版本),請參閱版本資訊

  2. 如果您仍在本機開發,請嘗試產生更多事件以便收集資料:

    1. 在背景和前景之間切換應用程式,透過瀏覽各個畫面與應用程式互動,並/或觸發網路要求,產生事件。
  3. 請確認 Firebase 設定檔 (google-services.json) 已正確新增至應用程式,且您未修改該檔案。具體而言,請檢查下列項目:

    • 設定檔名稱未附加額外的字元,例如 (2)

    • 設定檔位於應用程式的模組 (應用程式層級) 目錄中。

    • 設定檔中列出的 Firebase Android 應用程式 ID (mobilesdk_app_id) 適用於您的應用程式。您可以在 專案設定的「您的應用程式」資訊卡中找到 Firebase 應用程式 ID。

    如果應用程式中的設定檔似乎有問題,請嘗試以下操作:

    1. 刪除應用程式目前的設定檔。

    2. 請按照這些操作說明下載新的設定檔,並將其新增至 Android 應用程式。

  4. 如果 SDK 正在記錄事件,且所有設定都正確無誤,但您仍未看到 SDK 偵測訊息或已處理的資料 (10 分鐘後),請與 Firebase 支援團隊聯絡

  1. 請檢查 Performance Monitoring Gradle 外掛程式的設定,如下所示:

    1. 請確認您已正確新增外掛程式。具體來說,請檢查下列項目:

      • 您已在模組 (應用程式層級) build.gradle 檔案中新增外掛程式 (apply plugin: 'com.google.firebase.firebase-perf')。
      • 您已在專案層級build.gradle 檔案中,加入外掛程式的類別路徑依附元件 (classpath 'com.google.firebase:perf-plugin:1.4.2')。

    2. 請確認外掛程式透過下列任一標記停用

      • 模組 (應用程式層級) build.gradle 檔案中的 instrumentationEnabled
      • firebasePerformanceInstrumentationEnabledgradle.properties 檔案中

  2. 請確認 Performance Monitoring SDK 停用,方法是在 AndroidManifest.xml 檔案中使用下列任一標記:

    • firebase_performance_collection_enabled
    • firebase_performance_collection_deactivated
  3. 請確認 Performance Monitoring 在執行階段停用。

  4. 如果您找不到應用程式中已停用的項目,請與 Firebase 支援團隊聯絡

Performance Monitoring 會先處理成效事件資料,再將資料顯示在成效資訊主頁中。

如果「SDK 偵測到」訊息出現後超過 24 小時,但您仍未看到資料,請檢查 Firebase 狀態資訊主頁,看看是否有已知的服務中斷情形。如果沒有停機情形,請與 Firebase 支援團隊聯絡

一般疑難排解

如果您已成功新增 SDK,並在應用程式中使用 Performance Monitoring,以下疑難排解提示可協助您解決涉及 Performance Monitoring 功能和工具的一般問題。

如果您沒有看到效能事件的記錄訊息,請嘗試下列疑難排解步驟:

  1. 請檢查 Performance Monitoring Gradle 外掛程式的設定,如下所示:

    1. 請確認您已正確新增外掛程式。具體來說,請檢查下列項目:

      • 您已在模組 (應用程式層級) build.gradle 檔案中新增外掛程式 (apply plugin: 'com.google.firebase.firebase-perf')。
      • 您已在專案層級build.gradle 檔案中,加入外掛程式的類別路徑依附元件 (classpath 'com.google.firebase:perf-plugin:1.4.2')。

    2. 請確認外掛程式透過下列任一標記停用

      • 模組 (應用程式層級) build.gradle 檔案中的 instrumentationEnabled
      • firebasePerformanceInstrumentationEnabledgradle.properties 檔案中

  2. 請確認 Performance Monitoring SDK 停用,方法是在 AndroidManifest.xml 檔案中使用下列任一標記:

    • firebase_performance_collection_enabled
    • firebase_performance_collection_deactivated
  3. 請確認 Performance Monitoring 在執行階段停用。

  4. 如果您找不到應用程式中已停用的項目,請與 Firebase 支援團隊聯絡

如果您沒有畫面轉譯追蹤記錄的資料,請嘗試下列疑難排解步驟:

  1. 請確認您使用的是最新版的 Android SDK (21.0.4 版)。螢幕轉譯追蹤記錄僅適用於 15.2.0 以上版本。

  2. 確認您沒有手動停用螢幕的硬體加速功能。

  3. 請確認您並未使用 DexGuard 或 Jack。Performance Monitoring 與這些工具鍊不相容。

    • DexGuard 會停用自動收集應用程式啟動、應用程式在前景中,以及應用程式在背景中的追蹤記錄。不過,如果應用程式使用 DexGuard,則任何自訂程式碼追蹤記錄都應正常運作。

    • Jack 已淘汰,通常不應在應用程式中使用。

您是否只看到自動收集的追蹤記錄資料,而沒有自訂程式碼追蹤記錄資料?請嘗試下列疑難排解步驟:

  1. 如果您是透過 Trace API 檢測自訂程式碼追蹤記錄,請檢查追蹤記錄的設定,特別是下列項目:

    • 自訂程式碼追蹤記錄和自訂指標的名稱必須符合下列規定:開頭或結尾不得有空白字元、開頭不得有底線 (_) 字元,且長度上限為 32 個字元。
    • 所有追蹤記錄都必須啟動及停止。未啟動、未停止或在啟動前停止的追蹤記錄將不會記錄。

  2. 如果您透過 @AddTrace 符號檢測自訂程式碼追蹤記錄,請檢查 Performance Monitoring Gradle 外掛程式的設定:

    1. 請確認您已正確新增外掛程式。具體來說,請檢查下列項目:

      • 您已在模組 (應用程式層級) build.gradle 檔案中新增外掛程式 (apply plugin: 'com.google.firebase.firebase-perf')。
      • 您已在專案層級build.gradle 檔案中,加入外掛程式的類別路徑依附元件 (classpath 'com.google.firebase:perf-plugin:1.4.2')。

    2. 請確認外掛程式透過下列任一標記停用

      • 模組 (應用程式層級) build.gradle 檔案中的 instrumentationEnabled
      • firebasePerformanceInstrumentationEnabledgradle.properties 檔案中

  3. 查看記錄訊息,確認 Performance Monitoring 是否記錄預期的自訂程式碼追蹤記錄。

  4. 如果 Performance Monitoring 正在記錄事件,但 24 小時後沒有顯示任何資料,請與 Firebase 支援團隊聯絡

如果網路要求資料遺失,請嘗試下列疑難排解步驟:

  1. 針對 Android 應用程式,Performance Monitoring Gradle 外掛程式可啟用檢測功能,提供自動監控 HTTP/S 網路要求。請確認下列事項:

    1. 請確認您已正確新增外掛程式。具體來說,請檢查下列項目:

      • 您已在模組 (應用程式層級) build.gradle 檔案中新增外掛程式 (apply plugin: 'com.google.firebase.firebase-perf')。
      • 您已在專案層級build.gradle 檔案中,加入外掛程式的類別路徑依附元件 (classpath 'com.google.firebase:perf-plugin:1.4.2')。

    2. 請確認外掛程式透過下列任一標記停用

      • 模組 (應用程式層級) build.gradle 檔案中的 instrumentationEnabled
      • firebasePerformanceInstrumentationEnabledgradle.properties 檔案中

  2. 檢查網路程式庫是否相容。Performance Monitoring 會自動收集使用下列網路程式庫的網路要求指標:OkHttp 3.x.x、Java 的 URLConnection 和 Apache HttpClient。

    請注意,您可以為網路要求新增自訂監控

  3. 請留意下列事項:

    • 視程式碼的行為和程式碼使用的網路程式庫而定,Performance Monitoring 可能只會回報已完成的網路要求。也就是說,系統可能不會回報仍處於開啟狀態的 HTTP/S 連線。

    • Performance Monitoring 與 DexGuard 和 Jack 不相容。

      • DexGuard 會停用 HTTP/S 網路要求的監控功能。
      • Jack 已淘汰,通常不應在應用程式中使用。
    • Performance Monitoring 不會回報含有無效 Content-Type 標頭的網路要求。不過,系統仍會接受沒有 Content-Type 標頭的網路要求。

進一步瞭解Performance Monitoring如何在網址模式下匯總網路要求資料

你也可以試試自訂網址模式

常見問題

我們將「重要問題」替換為「近期快訊」,這是因為我們最近推出了快訊功能,當系統偵測到超過您設定的門檻時,就會自動通知您。「問題」已淘汰,並由「警示」取代。

成效資訊卡頂端的應用程式選取器會篩選「最近的警示」下方的警示項目。系統只會顯示所選應用程式最近三則快訊。

如要進一步瞭解警示,請參閱「設定效能問題警示」。

Performance Monitoring 支援超過定義門檻的指標快訊。為避免與這些可設定的效能指標閾值產生混淆,我們已移除設定問題閾值的功能。

我們已將「詳細資料」和「指標」頁面替換為全新設計的集中式使用者介面 (UI),以改善排解問題的方式。這個新的疑難排解 UI 提供與「詳細資料」和「指標」相同的核心功能。如要進一步瞭解如何排解問題,請參閱「查看特定追蹤記錄的更多資料」。

Performance Monitoring 會從應用程式使用者的裝置收集效能資料。如果應用程式有許多使用者,或是應用程式產生大量效能活動,Performance Monitoring 可能會將資料收集作業限制在部分裝置上,以減少所處理的事件數量。這些上限值相當高,即使事件數量較少,指標值仍可代表使用者的應用程式體驗。

為管理收集的資料量,Performance Monitoring 會使用下列取樣選項:

  • 裝置端速率限制:為避免裝置突然傳送大量追蹤記錄,我們將裝置傳送的程式碼和網路要求追蹤記錄數量限制在每 10 分鐘 300 個事件。這種做法可防止裝置受到迴圈檢測工具的影響,因為迴圈檢測工具會傳送大量效能資料,並防止單一裝置扭曲效能測量結果。

  • 動態取樣Performance Monitoring 每天會從所有應用程式使用者收集有限數量的程式碼追蹤記錄和網路要求追蹤記錄。系統會在裝置上擷取動態取樣率 (使用 Firebase Remote Config),以判斷隨機裝置是否應擷取及傳送追蹤記錄。未選取用於取樣的裝置不會傳送任何事件。動態取樣率是應用程式專屬的,會調整以確保收集的資料總量維持在限制以下。

    啟用 BigQuery 整合功能的專案,可獲得較高的網路要求追蹤記錄數上限。

    使用者工作階段會從使用者的裝置傳送額外的詳細資料,因此需要更多資源才能擷取及傳送資料。為盡量減少使用者工作階段的影響,Performance Monitoring 也可能會限制工作階段數量。

  • 伺服器端速率限制:為確保應用程式不會超出取樣限制,Performance Monitoring 可能會使用伺服器端取樣功能,捨棄從裝置收到的部分事件。雖然這類限制不會影響指標的有效性,但可能會造成模式出現輕微變化,包括:

    • 追蹤記錄的數量可能與程式碼執行次數不同。
    • 在程式碼中緊密連結的追蹤記錄,每個追蹤記錄的樣本數量可能不同。

我們已將「Issues」分頁替換為「Alerts」,當您設定的閾值超出時,系統會自動通知您。您不再需要手動查看 Firebase 控制台,即可判斷門檻狀態。如要瞭解快訊,請參閱「設定效能問題快訊」。

我們已重新設計 Firebase 主控台的 Performance Monitoring 部分,讓「資訊主頁」分頁可在單一空間中顯示重要指標和所有追蹤記錄。在重新設計的過程中,我們移除了「裝置」和「網路」頁面。

「資訊主頁」分頁底部的追蹤記錄表格,會顯示「裝置端」和「網路」分頁顯示的所有資訊,但提供更多功能,包括可依特定指標的百分比變更排序追蹤記錄。如要查看特定追蹤記錄的所有指標和資料,請按一下追蹤記錄表中的追蹤記錄名稱。

您可以在追蹤記錄表的下列子分頁中查看追蹤記錄:

  • 網路要求追蹤記錄 (內建和自訂) -「網路要求」子分頁
  • 自訂程式碼追蹤記錄 -「自訂追蹤記錄」子分頁
  • 應用程式啟動、應用程式前景、應用程式背景追蹤記錄 - 自訂追蹤記錄子分頁
  • 畫面轉譯追蹤記錄 -「畫面轉譯」子分頁
  • 網頁載入追蹤記錄 - 網頁載入 子分頁

如要進一步瞭解追蹤記錄表、查看指標和資料,請前往控制台總覽頁面 (iOS+ | Android | 網頁)。

系統會假設裝置的刷新率為 60 Hz,並據此計算出顯示速度緩慢的畫面和凍結畫面。如果裝置的刷新率低於 60 Hz,每秒轉譯的影格數量較少,因此每個影格的轉譯時間會變慢。轉譯時間越長,系統回報的緩慢影格或凍結影格就越多,因為轉譯的畫面越多,就越容易出現緩慢或凍結的畫面。不過,如果裝置的螢幕更新率高於 60Hz,則每個影格都會縮短算繪時間。這可能導致系統回報的緩慢影格或凍結影格數量減少。這是 Performance Monitoring SDK 目前的限制。

如要查看除了應用程式活動之外的 Fragment 效能,請確認應用程式使用 Performance Monitoring Android SDK 20.1.0 以上版本。詳情請參閱「在應用程式中新增效能監控」。

每個片段和活動追蹤記錄都會根據應用程式中定義的類別名稱。每個畫面追蹤記錄都包含 st 前置字串,後面接著是類別名稱。在 Firebase 控制台中,前置字串已移除。如需更多資訊,請參閱「瞭解畫面轉譯效能資料 (Apple 和 Android 應用程式) 」。

Performance Monitoring 會針對裝置上收集的所有事件進行事件取樣。這項做法可讓我們從使用者裝置收集必要的事件,以提供成效指標。

Performance Monitoring 可讓您針對重視的指標設定快訊。針對產生的螢幕轉譯追蹤記錄,您可以設定快訊,在慢速和凍結影格百分比超過所設門檻時收到通知。

Android 版 Performance Monitoring 會使用位元碼檢測功能提供一些即用功能,例如監控 HTTP/S 網路要求。在編譯過程中,這個程序會依序檢查應用程式的所有類別 (包括依附元件),以便檢測用於評估應用程式網路要求效能的程式碼。

以下是導致建構時間增加的幾個主要因素:

  • 類別或檔案數量
  • 每個類別的大小 (程式碼行數)
  • 您的機器設定
  • 初始建構作業與後續建構作業 (後續建構作業通常比初始建構作業更快)

如要縮短建構時間,請考慮將程式碼模組化

Performance Monitoring 外掛程式的 v1.3.3 開始,我們著重於大幅改善增量建構處理作業,以及程式庫輸入內容的快取作業。如要取得最新的建構時間改善功能,請務必使用最新版的外掛程式 (v1.4.2)

請注意,如要避免建構時間過長,您可以在本機上為偵錯版本停用 Performance Monitoring 外掛程式。不過,我們不建議在正式版版本中使用這項做法,因為這可能會導致應用程式中網路要求的效能評估遺漏。

Android 版 Performance Monitoring 會使用位元碼檢測功能提供一些即用功能,例如監控 HTTP/S 網路要求。在編譯過程中,這個程序會依序檢查應用程式的所有類別 (包括依附元件),以便檢測用於評估應用程式網路要求效能的程式碼。

如果在整合 Performance Monitoring 外掛程式後,您收到 JSR/RET are not supported with computeFrames option 或類似的建構錯誤,可能是因為您也依附於與 Performance Monitoring Gradle 外掛程式不相容的程式庫。

如要解決這個問題,您可以按照下列步驟操作,將不相容的類別/程式庫排除在檢測範圍之外:

  1. 更新至最新版的 Performance Monitoring Gradle 外掛程式 (最低為 v1.4.0)。
  2. 將 Android Gradle 外掛程式版本更新至 7.2.0 以上版本。
  3. 將下列標記新增至模組 (應用程式層級) build.gradle 檔案,以便排除不相容的類別/程式庫,不進行檢測:
    android {
      // ...
      androidComponents {
        onVariants(selector().all(), {
            instrumentation.excludes.add("example.incompatible.library")
        })
      }
    }
    如要進一步瞭解 Android Gradle 外掛程式 Instrumentation API 的 exclude 屬性,請參閱「檢測」。

如果您因為不相容的程式庫而遇到建構錯誤,請提交 Github 問題,以便將這些程式庫排除在 Performance Monitoring 外掛程式中。

如果您已為 Firebase Performance Monitoring 啟用 BigQuery 整合功能,資料會在當天結束後 12 到 24 小時內匯出至 BigQuery (太平洋時間)。

舉例來說,4 月 19 日的資料會在 4 月 20 日下午 12 點至午夜之間,於 BigQuery 中顯示 (所有日期和時間均為太平洋時間)。

近乎即時的資料處理和顯示

Firebase Performance Monitoring 會在收集到成效資料時立即處理,因此 Firebase 主控台會顯示近乎即時的資料。處理完成的資料會在收集後的幾分鐘內顯示在主控台中,因此稱為「近乎即時」。

如要充分利用近乎即時的資料處理功能,請確認應用程式使用與即時處理相容的 SDK 版本

如要充分利用近乎即時的資料處理功能,您只需要確保應用程式使用的 Performance Monitoring SDK 版本與即時資料處理功能相容即可。

以下是支援即時效能資料的 SDK 版本:

  • iOS:7.3.0 以上版本
  • tvOS:8.9.0 以上版本
  • Android:19.0.10 以上版本 (或 Firebase Android BoM 26.1.0 以上版本)
  • 網頁:7.14.0 以上版本

請注意,我們一律建議您使用最新版 SDK,但上述任何版本都能讓 Performance Monitoring 以近乎即時的方式處理資料。

以下是支援即時資料處理的 SDK 版本:

  • iOS:7.3.0 以上版本
  • tvOS:8.9.0 以上版本
  • Android:19.0.10 以上版本 (或 Firebase Android BoM 26.1.0 以上版本)
  • 網頁:7.14.0 以上版本

請注意,我們一律建議您使用最新版 SDK,但上述任何版本都能讓 Performance Monitoring 以近乎即時的方式處理資料。

如果應用程式未使用與即時 SDK 相容的版本,您仍可在 Firebase 控制台中查看所有應用程式效能資料。不過,成效資料的顯示時間會比收集時間晚約 36 小時。

當然可以!無論應用程式執行個體使用哪個 SDK 版本,您都會看到所有使用者的效能資料。

不過,如果您查看的是近期資料 (大約 36 小時內的資料),系統會顯示使用即時相容 SDK 版本的應用程式執行個案使用者的資料。不過,非近期資料包含所有應用程式版本的成效資料。

聯絡 Firebase 支援團隊

如果您與 Firebase 支援團隊聯絡,請務必一併提供 Firebase 應用程式 ID。在 專案設定的「您的應用程式」資訊卡中,找出 Firebase 應用程式 ID。