本頁面提供疑難排解提示,協助您開始使用 Performance Monitoring,或使用 Performance Monitoring 功能和工具。
疑難排解的第一步
以下兩項檢查是建議所有人在進一步排解問題前採取的通用最佳做法。
1. 檢查記錄訊息中的效能事件
檢查記錄訊息,確認 Performance Monitoring SDK 是否正在擷取效能事件。
如何查看效能事件的記錄訊息
在建構時啟用 Performance Monitoring 的偵錯記錄,方法是在應用程式的 AndroidManifest.xml 檔案中新增 <meta-data> 元素,如下所示:
<application>
<meta-data
android:name="firebase_performance_logcat_enabled"
android:value="true" />
</application>
檢查記錄訊息中是否有任何錯誤訊息。
Performance Monitoring 會使用 FirebasePerformance 標記記錄訊息。使用 Logcat 篩選功能,執行下列指令即可查看特定觀看時間長度追蹤記錄和 HTTP/S 網路要求記錄:
adb logcat -s FirebasePerformance
檢查下列類型的記錄,確認 Performance Monitoring 是否記錄效能事件:
Logging trace metric: TRACE_NAME, FIREBASE_PERFORMANCE_CONSOLE_URL
Logging network request trace: URL
按一下網址,即可在 Firebase 控制台中查看資料。資訊主頁可能需要幾分鐘才會更新資料。
如果應用程式未記錄成效事件,請參閱疑難排解提示。
2. 查看 Firebase 狀態資訊主頁
請查看 Firebase 狀態資訊主頁,瞭解 Firebase 或 Performance Monitoring 是否有已知服務中斷情形。
開始使用 Performance Monitoring
如果您剛開始使用 Performance Monitoring (iOS+ | Android | Web),下列疑難排解提示有助於解決 Firebase 偵測到 SDK 或在 Firebase 控制台中顯示第一筆成效資料時發生的問題。
已將 SDK 新增至應用程式,但管理中心仍顯示需要新增 SDK
當 Firebase 收到應用程式傳送的事件資訊 (例如應用程式互動) 時,就能偵測您是否已成功將 Performance Monitoring SDK 新增至應用程式。通常在啟動應用程式後 10 分鐘內,Firebase 控制台的效能資訊主頁就會顯示「已偵測到 SDK」訊息。接著,資訊主頁會在 30 分鐘內顯示初始處理的資料。
如果您在應用程式中加入最新版 SDK 已超過 10 分鐘,但仍未看到任何變更,請檢查記錄訊息,確認 Performance Monitoring 是否正在記錄事件。請按照下文所述的疑難排解步驟操作,解決 SDK 偵測延遲的問題。
應用程式記錄事件:疑難排解步驟
請確認您使用的是 Performance Monitoring Android SDK 19.1.0 以上版本 (或 Firebase BoM 26.3.0 以上版本),請參閱版本資訊。
如果您仍在本地開發,請嘗試產生更多事件來收集資料:
- 多次在背景和前景之間切換應用程式、在不同畫面之間瀏覽應用程式,以及/或觸發網路要求,即可產生事件。
請確認您已將Firebase 設定檔 (google-services.json) 正確加入應用程式,且未修改該檔案。請特別檢查下列事項:
如果應用程式中的設定檔有任何問題,請嘗試下列做法:
刪除應用程式中目前的設定檔。
按照這些操作說明下載新的設定檔,並新增至 Android 應用程式。
如果 SDK 正在記錄事件,且一切設定似乎都正確無誤,但您仍未看到 SDK 偵測訊息或已處理的資料 (10 分鐘後),請與 Firebase 支援團隊聯絡。
應用程式未記錄事件:
疑難排解步驟
請按照下列步驟檢查 Performance Monitoring Gradle 外掛程式的設定:
請確認您已正確新增外掛程式,並檢查下列項目:
- 您已在模組 (應用程式層級)
build.gradle 檔案中新增外掛程式 (apply plugin: 'com.google.firebase.firebase-perf')。
- 您已在專案層級的
build.gradle 檔案中,加入外掛程式的類別路徑依附元件 (classpath 'com.google.firebase:perf-plugin:2.0.2')。
請確認外掛程式「未」透過下列任一標記停用:
- 模組 (應用程式層級) 的
instrumentationEnabled build.gradle 檔案
firebasePerformanceInstrumentationEnabled在 firebasePerformanceInstrumentationEnabled 檔案中gradle.properties
檢查 Performance Monitoring SDK 是否未透過 AndroidManifest.xml 檔案中的下列任一標記停用:
firebase_performance_collection_enabled
firebase_performance_collection_deactivated
請確保 Performance Monitoring 在執行階段未停用。
如果找不到應用程式中已停用的項目,請與 Firebase 支援團隊聯絡。
一般疑難排解
如果您已成功新增 SDK,並在應用程式中使用 Performance Monitoring,下列疑難排解提示可協助您解決與 Performance Monitoring 功能和工具相關的一般問題。
應用程式未記錄效能事件
如果沒有看到效能事件的記錄訊息,請嘗試下列疑難排解步驟:
請按照下列步驟檢查 Performance Monitoring Gradle 外掛程式的設定:
請確認您已正確新增外掛程式,並檢查下列項目:
- 您已在模組 (應用程式層級)
build.gradle 檔案中新增外掛程式 (apply plugin: 'com.google.firebase.firebase-perf')。
- 您已在專案層級的
build.gradle 檔案中,加入外掛程式的類別路徑依附元件 (classpath 'com.google.firebase:perf-plugin:2.0.2')。
請確認外掛程式「未」透過下列任一標記停用:
- 模組 (應用程式層級) 的
instrumentationEnabled build.gradle 檔案
firebasePerformanceInstrumentationEnabled在 firebasePerformanceInstrumentationEnabled 檔案中gradle.properties
檢查 Performance Monitoring SDK 是否未透過 AndroidManifest.xml 檔案中的下列任一標記停用:
firebase_performance_collection_enabled
firebase_performance_collection_deactivated
請確保 Performance Monitoring 在執行階段未停用。
如果找不到應用程式中已停用的項目,請與 Firebase 支援團隊聯絡。
效能資訊主頁缺少畫面追蹤資料
如果缺少畫面算繪追蹤資料,請嘗試下列疑難排解步驟:
請確認您使用的是最新版本的 Android SDK (22.0.5 版)。只有 15.2.0 以上版本才提供畫面算繪追蹤記錄。
確認你未手動停用畫面的硬體加速。
請確認您未使用 DexGuard 或 Jack。Performance Monitoring 與這些工具鍊不相容。
成效資訊主頁缺少自訂追蹤資料
您是否看到自動收集的追蹤記錄成效資料,但沒有自訂程式碼追蹤記錄的資料?請嘗試下列疑難排解步驟:
如果您透過 Trace API 檢測自訂程式碼追蹤記錄,請檢查追蹤記錄的設定,特別是下列項目:
- 自訂程式碼追蹤和自訂指標的名稱必須符合下列規定:開頭或結尾不得有空白字元,開頭不得有底線 (
_) 字元,且長度上限為 32 個字元。
- 所有追蹤記錄都必須啟動及停止。如果追蹤記錄未啟動、未停止或在啟動前停止,系統就不會記錄。
如果您透過 @AddTrace
標註插碼自訂程式碼追蹤,請檢查 Performance Monitoring Gradle 外掛程式的設定:
請確認您已正確新增外掛程式,並檢查下列項目:
- 您已在模組 (應用程式層級)
build.gradle 檔案中新增外掛程式 (apply plugin: 'com.google.firebase.firebase-perf')。
- 您已在專案層級的
build.gradle 檔案中,加入外掛程式的類別路徑依附元件 (classpath 'com.google.firebase:perf-plugin:2.0.2')。
請確認外掛程式「未」透過下列任一標記停用:
- 模組 (應用程式層級) 的
instrumentationEnabled build.gradle 檔案
firebasePerformanceInstrumentationEnabled在 firebasePerformanceInstrumentationEnabled 檔案中gradle.properties
檢查記錄訊息,確認 Performance Monitoring 正在記錄預期的自訂程式碼追蹤記錄。
如果 Performance Monitoring 正在記錄事件,但 24 小時後仍未顯示任何資料,請與 Firebase 支援團隊聯絡。
效能資訊主頁缺少網路要求資料
如果缺少網路要求資料,請嘗試下列疑難排解步驟:
如果是 Android 應用程式,Performance Monitoring Gradle 外掛程式會啟用插裝功能,自動監控 HTTP/S 網路要求。請確認下列事項:
請確認您已正確新增外掛程式,並檢查下列項目:
- 您已在模組 (應用程式層級)
build.gradle 檔案中新增外掛程式 (apply plugin: 'com.google.firebase.firebase-perf')。
- 您已在專案層級的
build.gradle 檔案中,加入外掛程式的類別路徑依附元件 (classpath 'com.google.firebase:perf-plugin:2.0.2')。
請確認外掛程式「未」透過下列任一標記停用:
- 模組 (應用程式層級) 的
instrumentationEnabled build.gradle 檔案
firebasePerformanceInstrumentationEnabled在 firebasePerformanceInstrumentationEnabled 檔案中gradle.properties
檢查網路程式庫是否不相容。Performance Monitoring 會自動收集使用下列網路程式庫的網路要求指標:OkHttp 3.x.x、Java 的 URLConnection 和 Apache HttpClient。
請注意,您可以為網路要求新增自訂監控。
請留意下列事項:
視程式碼的行為和程式碼使用的網路程式庫而定,Performance Monitoring 可能只會回報已完成的網路要求。這表示系統可能不會回報保持開啟的 HTTP/S 連線。
「Performance Monitoring」與 DexGuard 和 Jack 不相容。
- DexGuard 會停用 HTTP/S 網路要求監控功能。
- Jack 已淘汰,一般不應在應用程式中使用。
Performance Monitoring 不會回報含有無效Content-Type標頭的網路要求。不過,系統仍會接受沒有 Content-Type 標頭的網路要求。
常見問題
專案首頁的「成效」資訊卡中,「熱門問題」發生了什麼事?
我們最近推出了快訊功能,會在您設定的門檻遭到突破時自動通知您,因此我們將「重大問題」替換為「近期快訊」。問題現已淘汰,並由快訊取代。
成效資訊卡頂端的應用程式選取器會篩選「近期快訊」下方的快訊項目。系統只會顯示所選應用程式最近的三則快訊。
如要進一步瞭解警示,請參閱「設定效能問題警示」。
為什麼無法在控制台中設定問題的門檻?
Performance Monitoring支援快訊,可針對超過定義門檻的指標發出通知。為避免與可設定的成效指標門檻混淆,我們移除了問題的門檻設定功能。
Firebase 控制台中的「詳細資料」和「指標」資訊發生了什麼事?
我們已將「詳細資料」和「指標」頁面替換為全新設計的集中式使用者介面,藉此改善排解問題的方式。這個新的疑難排解 UI 提供與「詳細資料」和「指標」相同的核心功能。如要進一步瞭解如何排解問題,請參閱「查看特定追蹤記錄的更多資料」。
為什麼樣本數與預期不符?
Performance Monitoring 會從應用程式使用者的裝置收集效能資料。如果應用程式有許多使用者,或產生大量效能活動,Performance Monitoring 可能會限制資料收集範圍,只從部分裝置收集資料,以減少處理的事件數量。這些限制相當寬鬆,因此即使事件數量較少,指標值仍能代表使用者的應用程式體驗。
為管理我們蒐集的資料量,Performance Monitoring 會使用下列抽樣選項:
裝置端速率限制:為避免裝置突然傳送大量追蹤記錄,我們限制裝置每 10 分鐘最多傳送 300 個程式碼和網路要求追蹤記錄。這種做法可避免裝置因迴圈式插碼而傳送大量成效資料,並防止單一裝置影響效能評估結果。
動態取樣:Performance Monitoring每天為每位應用程式使用者收集有限數量的程式碼追蹤記錄和網路要求追蹤記錄。裝置會擷取動態取樣率 (使用 Firebase Remote Config),判斷隨機裝置是否應擷取及傳送追蹤記錄。未選取取樣的裝置不會傳送任何事件。動態取樣率是應用程式專屬的設定,會自動調整,確保收集的資料總量不超過上限。
啟用 BigQuery 整合的專案,網路要求追蹤記錄的數量上限會提高。
使用者工作階段會從使用者的裝置傳送額外的詳細資料,因此需要更多資源來擷取及傳送資料。為盡量減少使用者工作階段的影響,Performance Monitoring 也可能會限制工作階段數量。
伺服器端速率限制:為確保應用程式不會超過取樣限制,Performance Monitoring 可能會使用伺服器端取樣,捨棄從裝置收到的部分事件。雖然這類限制不會影響指標的有效性,但可能會導致模式出現微小變化,包括:
- 追蹤記錄的數量可能與程式碼片段的執行次數不同。
- 程式碼中緊密耦合的追蹤記錄可能各有不同數量的樣本。
主控台的「問題」分頁發生什麼事?
我們推出「快訊」功能,取代了「問題」分頁。當您設定的門檻遭到突破時,系統會自動通知您,因此您不必再手動檢查 Firebase 控制台,即可判斷門檻狀態。如要瞭解快訊,請參閱「設定效能問題快訊」。
控制台中的「裝置端」和「網路」分頁標籤發生了什麼事?
如何查看這些網頁上的追蹤記錄?
我們重新設計了 Firebase 控制台的「Performance Monitoring」部分,現在「資訊主頁」分頁會顯示重要指標和所有追蹤記錄。此外,我們也移除了「裝置端」和「網路」頁面。
「資訊主頁」分頁底部的追蹤記錄表格,與「裝置端」和「網路」分頁顯示的資訊完全相同,但新增了幾項功能,包括可依特定指標的百分比變化排序追蹤記錄。如要查看特定追蹤記錄的所有指標和資料,請按一下追蹤記錄表格中的追蹤記錄名稱。
在追蹤記錄表格的下列子分頁中查看追蹤記錄:
- 網路要求追蹤記錄 (包括預設和自訂) -「網路要求」子分頁
- 自訂程式碼追蹤記錄 -「自訂追蹤記錄」子分頁
- 應用程式啟動、應用程式在前台、應用程式在背景追蹤記錄 -「自訂追蹤記錄」子分頁
- 畫面轉譯追蹤記錄 -「畫面轉譯」子分頁
- 網頁載入追蹤記錄 -「載入網頁」子分頁
如要進一步瞭解追蹤記錄表,以及如何查看指標和資料,請參閱控制台總覽頁面 (iOS+ |
Android |
Web)。
為什麼緩慢和凍結影格的數量與預期不符?
系統會假設裝置的重新整理頻率為 60Hz,計算轉譯速度緩慢的影格和凍結影格。如果裝置的螢幕刷新率低於 60 Hz,由於每秒轉譯的影格較少,每個影格的轉譯時間就會較慢。轉譯時間較長可能會導致系統回報更多緩慢或凍結的影格,因為會有更多影格轉譯速度較慢或凍結。不過,如果裝置的更新率高於 60Hz,每個影格的算繪時間就會更快。這可能會導致系統回報的緩慢或凍結影格較少。這是 Performance Monitoring SDK 目前的限制。
為什麼我看到的片段追蹤記錄比其他追蹤記錄少?
Performance Monitoring 會對裝置上收集的所有事件進行事件取樣。
這種做法可讓我們從使用者裝置收集最低數量的必要事件,
以提供效能指標。
應用程式的算繪效能有問題時,我會收到哪些通知?
Performance Monitoring 可讓您針對關注的指標設定快訊。針對產生的畫面算繪追蹤記錄,您可以設定快訊,在緩慢和凍結影格的百分比超過您設定的門檻時收到通知。
啟用 Performance Monitoring Gradle 外掛程式後,建構時間變長。如何改善這種情況?
Android 版 Performance Monitoring 會使用位元碼檢測功能,提供一些開箱即用的功能,例如監控 HTTP/S 網路要求。編譯時,這個程序需要逐一檢查應用程式的所有類別 (包括依附元件),以便插進程式碼,這對評估應用程式的網路要求效能至關重要。
以下列舉幾個導致建構時間變長的主要因素:
- 類別或檔案數量
- 每個類別的大小 (程式碼行數)
- 機器設定
- 初始建構與後續建構 (後續建構通常比初始建構快)
如要縮短建構時間,請考慮將程式碼模組化。
從 Performance Monitoring 外掛程式的 1.3.3 版開始,我們著重於大幅改善增量建構處理程序,以及程式庫輸入內容的快取。如要獲得最新的建構時間改善項目,請務必使用外掛程式的最新版本 (2.0.2 版)。
請注意,如要避免建構時間過長,您可以在本機停用偵錯版本的 Performance Monitoring 外掛程式。不過,我們不建議對正式版建構作業採取這種做法,因為這樣可能會導致應用程式中網路要求的效能測量結果有誤。
如果因程式庫與 Performance Monitoring Gradle 外掛程式不相容而發生建構錯誤,該怎麼辦?
Android 版 Performance Monitoring 會使用位元碼檢測功能,提供一些開箱即用的功能,例如監控 HTTP/S 網路要求。編譯時,這個程序需要逐一檢查應用程式的所有類別 (包括依附元件),以便插進程式碼,這對評估應用程式的網路要求效能至關重要。
整合 Performance Monitoring 外掛程式後,如果發生 JSR/RET are not supported with
computeFrames option 等建構錯誤,可能是因為您也依附於與 Performance Monitoring Gradle 外掛程式不相容的程式庫。
如要解決這個問題,請按照下列步驟操作,排除不相容的類別/程式庫,避免遭到插碼:
- 更新至最新版 Performance Monitoring Gradle 外掛程式 (最低 1.4.0 版)。
- 將 Android Gradle 外掛程式版本更新至 7.2.0 以上版本。
- 在模組 (應用程式層級)
build.gradle 檔案中新增下列標記,排除不相容的類別/程式庫,避免遭到插樁:android {
// ...
androidComponents {
onVariants(selector().all(), {
instrumentation.excludes.add("example.incompatible.library")
})
}
}
如要進一步瞭解 Android Gradle 外掛程式 Instrumentation API 的 exclude 屬性,請參閱「Instrumentation」。
如果因程式庫不相容而發生建構錯誤,請提出 GitHub 問題,以便將這些程式庫從 Performance Monitoring 外掛程式的插樁作業中排除。
我的 Performance Monitoring 資料匯出至 BigQuery 的時間比預期長。是否不是即時資訊?
如果您已為 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 就能近乎即時地處理您的資料。
哪些版本的 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 版本,會怎麼樣?
如果應用程式使用的 SDK 版本不支援即時資料,您仍可在Firebase控制台中查看應用程式的所有效能資料,但顯示的效能資料會延遲約 36 小時。
我已更新至支援即時效能資料的 SDK 版本,但部分使用者仍使用舊版應用程式。我還會在 Firebase 控制台中看到他們的效能資料嗎?
當然可以!無論應用程式例項使用哪個 SDK 版本,您都會看到所有使用者的成效資料。
不過,如果您查看的是近期資料 (大約 36 小時內的資料),顯示的資料會來自使用即時相容 SDK 版本的應用程式執行個體。但非近期資料則會包含所有應用程式版本的成效資料。
如果與 Firebase 支援團隊聯絡,請務必提供 Firebase 應用程式 ID。在「您的應用程式」資訊卡中,找出 Firebase 應用程式 ID。這張資訊卡位於settings「專案設定」。