本頁提供疑難排解提示,協助您開始使用 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檔案中firebasePerformanceInstrumentationEnabledgradle.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檔案中firebasePerformanceInstrumentationEnabledgradle.properties
確認 Performance Monitoring SDK 未透過 AndroidManifest.xml 檔案中的下列任一標記停用:
firebase_performance_collection_enabled
firebase_performance_collection_deactivated
請確保 Performance Monitoring 在執行階段未停用。
如果找不到應用程式中已停用的項目,請與 Firebase 支援團隊聯絡。
效能資訊主頁面缺少畫面追蹤資料
如果螢幕算繪追蹤記錄缺少資料,請嘗試下列疑難排解步驟:
請確認您使用的是最新版 Android SDK (22.0.3 版)。螢幕算繪追蹤記錄僅適用於 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檔案中firebasePerformanceInstrumentationEnabledgradle.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
- 在您的
gradle.properties 檔案中的 firebasePerformanceInstrumentationEnabled
檢查網路程式庫是否不相容。Performance Monitoring 會自動收集使用下列網路庫的網路請求的指標:OkHttp 3.xx、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 可能會使用伺服器端取樣來丟棄從裝置接收的一些事件。雖然這類限制不會影響指標的有效性,但可能會導致模式出現微小變化,包括:
- 追蹤記錄的數量可能與程式碼片段的執行次數不同。
- 程式碼中緊密耦合的追蹤記錄可能各有不同數量的樣本。
控制台中的 Issues 選項卡發生了什麼事?
我們已推出「快訊」功能,取代「問題」分頁。當您設定的門檻遭到突破時,系統會自動通知您。您不必再手動檢查 Firebase 控制台,判斷門檻狀態。如要瞭解快訊,請參閱「設定效能問題快訊」。
控制台中的「裝置端」和「網路」分頁發生了什麼事?
我該如何查看那些頁面上的痕跡?
我們重新設計了Firebase主控台的Performance Monitoring部分,現在「資訊主頁」分頁會在一處顯示主要指標和所有追蹤記錄。在重新設計的過程中,我們移除了「裝置上」和「網路」頁面。
「資訊主頁」分頁底部的追蹤記錄表格,會顯示「裝置上」和「網路」分頁中的所有資訊,但會新增一些功能,包括依特定指標的百分比變化排序追蹤記錄。如要查看特定追蹤記錄的所有指標和資料,請按一下追蹤記錄表格中的追蹤記錄名稱。
在追蹤記錄表格的下列子分頁中查看追蹤記錄:
- 網路要求追蹤記錄 (包括預設和自訂) -「網路要求」子分頁
- 自訂程式碼追蹤記錄 -「自訂追蹤記錄」子分頁
- 應用程式啟動、應用程式在前台、應用程式在背景追蹤記錄 -「自訂追蹤記錄」子分頁
- 畫面轉譯追蹤記錄 -「畫面轉譯」子分頁
- 網頁載入追蹤記錄 -「載入網頁」子分頁
如要進一步瞭解追蹤記錄表,以及如何查看指標和資料,請參閱控制台總覽頁面 (iOS+ | Android | 網站)。
為什麼緩慢和凍結影格的數量與預期不符?
系統會假設裝置的畫面更新率為 60 Hz,計算顯示速度緩慢的影格和凍結影格。如果裝置的螢幕刷新率低於 60 Hz,由於每秒轉譯的影格較少,每個影格的轉譯時間就會較長。轉譯時間越長,回報的緩慢或凍結影格就越多,因為更多影格會轉譯緩慢或凍結。不過,如果裝置的螢幕更新率高於 60Hz,每個影格的算繪時間就會更快。這可能會導致系統回報的緩慢或凍結影格較少。這是 Performance Monitoring SDK 目前的限制。
為什麼我無法查看片段追蹤記錄?
如要查看片段的成效 (以及應用程式活動),請確認應用程式使用的是 Performance Monitoring Android SDK 20.1.0 以上版本。詳情請參閱「在應用程式中新增效能監控功能」。
為什麼我看到的片段追蹤記錄比其他追蹤記錄少?
Performance Monitoring 會對裝置上收集的所有事件進行事件取樣。
這種方法使我們能夠從用戶設備收集提供效能指標所需的最少事件。
當我的應用程式渲染效能出現問題時,我該如何收到通知?
Performance Monitoring 可讓您針對重視的指標設定快訊。針對產生的畫面算繪追蹤記錄,您可以設定快訊,在緩慢和凍結影格的百分比超過您設定的門檻時收到通知。
啟用 Performance Monitoring Gradle 外掛程式後,建構時間變長。如何改善這種情況?
Android 版 Performance Monitoring 會使用位元碼檢測功能,提供一些開箱即用的功能,例如監控 HTTP/S 網路要求。在編譯過程中,系統會對應用程式的所有類別 (包括依附元件) 進行疊代,以便檢測程式碼,這對評估應用程式的網路要求效能至關重要。
以下是一些導致建置時間增加的主要因素:
- 類別或文件的數量
- 每個類別的大小(程式碼行數)
- 您的機器配置
- 初始建構與後續建構 (後續建構通常比初始建構快)
為了優化建置時間,請考慮以下因素模組化你的程式碼。
從 Performance Monitoring 外掛程式的 1.3.3 版開始,我們著重於大幅改善增量建構處理程序,以及程式庫輸入內容的快取。如要取得最新的建構時間改善項目,請務必使用最新版本的外掛程式 (v2.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 — v7.3.0 或更高版本
- tvOS — v8.9.0 或更高版本
- Android — v19.0.10 或更高版本(或 Firebase Android BoM v26.1.0 或更高版本)
- 網頁 - 7.14.0 以上版本
請注意,我們一律建議使用最新版 SDK,但只要是上述列出的版本,Performance Monitoring 就能近乎即時地處理您的資料。
哪些版本的 Performance Monitoring SDK 被認為是即時相容的?
以下是支援即時資料處理的 SDK 版本:
- iOS — v7.3.0 或更高版本
- tvOS — v8.9.0 或更高版本
- Android — v19.0.10 或更高版本(或 Firebase Android BoM v26.1.0 或更高版本)
- 網頁 - 7.14.0 以上版本
請注意,我們一律建議使用最新版 SDK,但只要是上述列出的版本,Performance Monitoring 就能近乎即時地處理您的資料。
如果我沒有更新應用程式,改用與即時通訊相容的 SDK 版本,會怎麼樣?
如果應用程式使用的 SDK 版本不支援即時資料,您仍可在 Firebase 控制台中查看應用程式的所有成效資料。不過,成效資料的顯示時間會比收集時間延遲約 36 小時。
我已更新至支援即時效能資料的 SDK 版本,但部分使用者仍使用舊版應用程式。我還會在 Firebase 控制台中看到他們的效能資料嗎?
當然可以!無論應用程式例項使用哪個版本的 SDK,您都會看到所有使用者的效能資料。
不過,如果您查看的是近期資料 (大約 36 小時內的資料),顯示的資料會來自使用即時相容 SDK 版本的應用程式例項使用者。不過,非近期資料包含應用程式所有版本的成效資料。
如果與 Firebase 支援團隊聯絡,請務必提供 Firebase 應用程式 ID。在「您的應用程式」資訊卡中,找出 Firebase 應用程式 ID。這張資訊卡位於settings「專案設定」。