本頁提供有關效能監控入門或使用效能監控功能和工具的故障排除提示。
首先檢查故障排除
以下兩項檢查是在進一步排除故障之前建議任何人進行的一般最佳實踐。
1. 檢查效能事件的日誌訊息
檢查日誌訊息以確保效能監控 SDK 正在擷取效能事件。
透過將
<meta-data>
元素新增至應用程式的AndroidManifest.xml
檔案中,在建置時啟用效能監控的偵錯日誌記錄,如下所示:<application> <meta-data android:name="firebase_performance_logcat_enabled" android:value="true" /> </application>
檢查日誌訊息中是否有任何錯誤訊息。
效能監控使用
FirebasePerformance
標記其日誌訊息。使用 logcat 過濾,您可以透過執行以下命令專門查看持續時間追蹤和 HTTP/S 網路請求日誌記錄:adb logcat -s FirebasePerformance
檢查以下類型的日誌,這些日誌表明效能監控正在記錄效能事件:
-
Logging trace metric: TRACE_NAME , FIREBASE_PERFORMANCE_CONSOLE_URL
-
Logging network request trace: URL
-
按一下 URL 可在 Firebase 控制台中查看您的資料。儀表板中的資料更新可能需要一些時間。
如果您的應用程式沒有記錄效能事件,請查看故障排除提示。
2.檢查 Firebase 狀態儀表板
檢查Firebase 狀態儀表板,以防 Firebase 或效能監控出現已知中斷。
效能監控入門
如果您開始使用效能監控 ( iOS+ | Android | Web ),以下故障排除提示可協助解決涉及 Firebase 偵測 SDK 或在 Firebase 控制台中顯示第一個效能資料的問題。
當 Firebase 從您的應用程式收到事件訊息(例如應用程式互動)時,它可以偵測您是否已成功將效能監控 SDK 新增至您的應用程式。通常在啟動應用程式後 10 分鐘內,Firebase 控制台的效能儀表板會顯示「偵測到 SDK」訊息。然後,在 30 分鐘內,儀表板將顯示初始處理的資料。
如果自從您將最新版本的 SDK 添加到應用程式以來已經超過 10 分鐘,並且您仍然沒有看到任何更改,請檢查日誌訊息以確保效能監控正在記錄事件。嘗試依照如下所述執行適當的故障排除步驟來排除 SDK 偵測訊息延遲的故障。
確保您使用的是效能監控 Android SDK 19.1.0 或更高版本(或 Firebase BoM 26.3.0 或更高版本),請參閱發行說明。
如果您仍在本地開發,請嘗試產生更多事件以進行資料收集:
- 透過在背景和前台之間多次切換應用程式、透過跨螢幕導航與應用程式互動和/或觸發網路請求來產生事件。
確保您的Firebase 設定檔(
google-services.json
) 已正確新增至您的應用程式中,並且您尚未修改該檔案。具體來說,檢查以下內容:設定檔名未附加其他字符,例如
(2)
。設定檔位於應用程式的模組(應用程式層級)目錄中。
設定檔中列出的 Firebase Android 應用程式 ID (
mobilesdk_app_id
) 對於您的應用程式來說是正確的。在設定的您的應用程式卡中找到您的 Firebase 應用程式 ID。
如果您的應用程式中的設定檔出現任何問題,請嘗試以下操作:
刪除應用程式中目前的設定檔。
請按照以下說明下載新的設定檔並將其新增至您的 Android 應用程式。
如果 SDK 正在記錄事件並且一切似乎都已正確設置,但您仍然沒有看到 SDK 偵測訊息或已處理的資料(10 分鐘後),請聯絡 Firebase 支援。
檢查性能監控Gradle插件的設置,如下:
確保您正確添加了插件。具體來說,檢查以下內容:
- 您在模組(應用程式層級)
build.gradle
檔案中新增了插件(
)。apply plugin: 'com.google.firebase.firebase-perf' - 您在專案層級
build.gradle
檔案中包含了插件的類別路徑依賴項 (
)。classpath 'com.google.firebase:perf-plugin:1.4.2'
- 您在模組(應用程式層級)
-
instrumentationEnabled
在您的模組(應用程式層級)build.gradle
檔案中 firebasePerformanceInstrumentationEnabled
在gradle.properties
檔案中啟用
-
透過
AndroidManifest.xml
檔案中的以下任一標誌檢查是否未停用效能監控 SDK :-
firebase_performance_collection_enabled
-
firebase_performance_collection_deactivated
-
確保效能監視在運行時未停用。
如果您找不到應用程式中停用的任何內容,請聯絡 Firebase 支援。
效能監控會先處理效能事件數據,然後再顯示在效能儀表板中。
如果自「偵測到 SDK」訊息出現以來已超過 24 小時,且您仍看不到數據,請檢查Firebase 狀態儀表板,以防出現已知的中斷。如果沒有出現中斷,請聯絡 Firebase 支援。
一般故障排除
如果您已成功新增 SDK 並在應用程式中使用效能監控,則下列故障排除提示可協助解決涉及效能監控功能和工具的一般問題。
如果您沒有看到效能事件的日誌訊息,請嘗試以下故障排除步驟:
檢查性能監控Gradle插件的設置,如下:
確保您正確添加了插件。具體來說,檢查以下內容:
- 您在模組(應用程式層級)
build.gradle
檔案中新增了插件(
)。apply plugin: 'com.google.firebase.firebase-perf' - 您在專案層級
build.gradle
檔案中包含了插件的類別路徑依賴項 (
)。classpath 'com.google.firebase:perf-plugin:1.4.2'
- 您在模組(應用程式層級)
-
instrumentationEnabled
在您的模組(應用程式層級)build.gradle
檔案中 firebasePerformanceInstrumentationEnabled
在gradle.properties
檔案中啟用
-
透過
AndroidManifest.xml
檔案中的以下任一標誌檢查是否未停用效能監控 SDK :-
firebase_performance_collection_enabled
-
firebase_performance_collection_deactivated
-
確保效能監控在運行時未停用。
如果您找不到應用程式中停用的任何內容,請聯絡 Firebase 支援。
如果您缺少螢幕渲染追蹤數據,請嘗試以下故障排除步驟:
確保您使用的是最新版本的 Android SDK (v20.5.2)。螢幕渲染追蹤僅適用於 v15.2.0 或更高版本。
確保您沒有手動停用螢幕的硬體加速。
確保您沒有使用 DexGuard 或 Jack。效能監控與這些工具鏈不相容。
您是否看到了自動收集的追蹤的效能數據,但沒有看到自訂程式碼追蹤的效能數據?請嘗試以下故障排除步驟:
如果您透過Trace API偵測自訂程式碼追蹤,請檢查追蹤的設置,尤其是以下內容:
- 自訂程式碼追蹤和自訂指標的名稱必須符合以下要求:沒有前導或尾隨空格、沒有前導底線 (
_
) 字元、最大長度為 32 個字元。 - 所有追蹤都必須啟動和停止。任何未啟動、未停止或在啟動之前停止的追蹤都不會被記錄。
- 自訂程式碼追蹤和自訂指標的名稱必須符合以下要求:沒有前導或尾隨空格、沒有前導底線 (
如果您透過
@AddTrace
符號檢測自訂程式碼跟踪,請檢查效能監控 Gradle 插件的設定:確保您正確添加了插件。具體來說,檢查以下內容:
- 您在模組(應用程式層級)
build.gradle
檔案中新增了插件(
)。apply plugin: 'com.google.firebase.firebase-perf' - 您在專案層級
build.gradle
檔案中包含了插件的類別路徑依賴項 (
)。classpath 'com.google.firebase:perf-plugin:1.4.2'
- 您在模組(應用程式層級)
-
instrumentationEnabled
在您的模組(應用程式層級)build.gradle
檔案中 firebasePerformanceInstrumentationEnabled
在gradle.properties
檔案中啟用
-
檢查日誌訊息以確保效能監控正在記錄預期的自訂程式碼追蹤。
如果效能監控正在記錄事件,但 24 小時後沒有顯示任何數據,請聯絡 Firebase 支援。
如果您缺少網路請求數據,請嘗試以下故障排除步驟:
對於 Android 應用程序,效能監控 Gradle 外掛程式支援自動監控 HTTP/S 網路請求的偵測。檢查以下內容:
確保您正確添加了插件。具體來說,檢查以下內容:
- 您在模組(應用程式層級)
build.gradle
檔案中新增了插件(
)。apply plugin: 'com.google.firebase.firebase-perf' - 您在專案層級
build.gradle
檔案中包含了該插件的類別路徑依賴項 (
)。classpath 'com.google.firebase:perf-plugin:1.4.2'
- 您在模組(應用程式層級)
-
instrumentationEnabled
在您的模組(應用程式層級)build.gradle
檔案中 firebasePerformanceInstrumentationEnabled
在gradle.properties
檔案中啟用
-
檢查網路庫是否不相容。效能監控自動收集使用以下網路庫的網路請求的指標:OkHttp 3.xx、Java 的 URLConnection 和 Apache HttpClient。
請注意,您可以新增對網路請求的自訂監控。
請注意以下事項:
根據程式碼的行為和程式碼使用的網路庫,效能監控可能僅報告已完成的網路請求。這意味著可能不會報告保持開啟的 HTTP/S 連線。
效能監控與 DexGuard 和 Jack 不相容。
- DexGuard 會停用對 HTTP/S 網路請求的監控。
- Jack已被棄用,通常不應在您的應用程式中使用。
效能監控不會報告具有無效
Content-Type
標頭的網路請求。但是,沒有Content-Type
標頭的網路請求仍將被接受。
您也可以嘗試自訂 URL 模式!
常問問題
我們將「熱門問題」替換為「最近警報」 ,作為我們最近引入警報的後續措施,當超過您設定的閾值時,警報會自動通知您。問題現已棄用並由警報取代。
效能卡頂部的應用程式選擇器會篩選「最近警報」下的警報條目。僅顯示所選應用程式的三個最新警報。
要了解有關警報的更多信息,請參閱設定性能問題警報。
效能監控支援針對超出定義閾值的指標發出警報。為了避免與這些效能指標的可配置閾值混淆,我們刪除了為問題配置閾值的功能。
我們以新設計的集中式使用者介面 (UI) 取代了「詳細資訊」和「指標」頁面,以改善解決問題的方式。這個新的故障排除 UI 提供了與「詳細資料」和「指標」所提供的相同的核心功能。要了解有關故障排除的更多信息,請參閱查看特定追蹤的更多數據。
效能監控從應用程式的用戶設備收集效能數據。如果您的應用程式有許多用戶,或者應用程式產生大量效能活動,效能監控可能會將資料收集限製到一部分設備,以減少處理的事件數量。這些限制足夠高,因此即使事件較少,指標值仍然可以代表使用者的應用程式體驗。
為了管理我們收集的資料量,效能監控使用以下採樣選項:
設備上速率限制:為了防止設備發送突然爆發的跟踪,我們將從設備發送的代碼和網路請求跟踪的數量限制為每 10 分鐘 300 個事件。這種方法可以保護設備免受可發送大量性能數據的循環儀器的影響,並防止單一設備扭曲性能測量結果。
動態採樣:效能監控每天在所有應用程式使用者中收集每個應用程式的程式碼追蹤事件限制為大約 100M,網路請求追蹤限制為 100M。在裝置上取得動態取樣率(使用 Firebase 遠端配置)以確定隨機裝置是否應擷取和傳送追蹤記錄。未選擇進行採樣的設備不會發送任何事件。動態取樣率是特定於應用程式的,並進行調整以確保收集的資料總量保持在限制以下。
用戶會話從用戶設備發送額外的詳細數據,需要更多資源來捕獲和發送數據。為了最大限度地減少使用者會話的影響,效能監控還可能限制會話數量。
伺服器端速率限制:為了確保應用程式不超過取樣限制,效能監控可能會使用伺服器端取樣來刪除從裝置接收的某些事件。儘管這種類型的限制不會改變我們指標的有效性,但它可能會導致輕微的模式變化,包括以下內容:
- 追蹤的數量可能與一段程式碼的執行次數不同。
- 程式碼中緊密耦合的追蹤可能各自具有不同數量的樣本。
我們用警報的引入取代了「問題」選項卡,當超出您設定的閾值時,警報會自動通知您。您不再需要手動檢查 Firebase 控制台來決定閾值的狀態。若要了解警報,請參閱設定效能問題警報。
我們重新設計了 Firebase 控制台的效能監控部分,以便「儀表板」標籤在一個空間中顯示您的關鍵指標和所有追蹤記錄。作為重新設計的一部分,我們刪除了「裝置上」和「網路」頁面。
儀表板選項卡底部的追蹤表具有與設備上和網路選項卡顯示的所有相同信息,但增加了一些功能,包括按特定指標的百分比變化對追蹤進行排序的功能。若要查看特定追蹤的所有指標和數據,請按一下追蹤表中的追蹤名稱。
在追蹤表的以下子標籤中查看您的追蹤:
- 網路請求追蹤(開箱即用和自訂)-網路請求子選項卡
- 自訂程式碼追蹤 -自訂追蹤子選項卡
- 應用程式啟動、應用程式在前台、應用程式在背景追蹤 -自訂追蹤子選項卡
- 螢幕渲染痕跡 -螢幕渲染子選項卡
- 頁面載入追蹤 -頁面載入子選項卡
有關追蹤表以及查看指標和數據的詳細信息,請訪問控制台概述頁面 ( iOS+ | Android | Web )。
緩慢渲染幀和凍結幀是在假定裝置更新率為 60Hz 的情況下計算的。如果裝置更新率低於 60Hz,則每幀的渲染時間將會變慢,因為每秒渲染的幀數較少。較慢的渲染時間可能會導致報告更多較慢或凍結的幀,因為更多的幀將渲染得較慢或凍結。但是,如果裝置更新率高於 60Hz,則每幀的渲染時間將會更快。這可能會導致報告的慢幀或凍結幀減少。這是效能監控 SDK 中的當前限制。
若要查看應用程式活動以外的片段效能,請確保您的應用程式使用效能監控 Android SDK 版本 20.1.0 或更高版本。要了解更多信息,請參閱將效能監控新增至您的應用程式。
每個片段和活動追蹤都基於應用程式中定義的類別名稱。每個螢幕追蹤都包含st前綴,後面跟著類別的名稱。在 Firebase 控制台上,前綴已刪除。要了解更多信息,請參閱了解螢幕渲染性能數據(Apple 和 Android 應用程式) 。
效能監控對設備上收集的所有事件進行事件採樣。這種方法使我們能夠從用戶設備收集提供效能指標所需的最少事件。
效能監控可讓您為您關心的指標設定警報。對於生成的螢幕渲染跟踪,您可以設定警報,以便在慢幀和凍結幀百分比超過您設定的閾值時通知您。
Android 效能監控使用字節碼偵測來提供一些開箱即用的功能,例如監控 HTTP/S 網路請求。作為編譯的一部分,該過程需要迭代應用程式的所有類別(包括依賴項),以檢測對於測量應用程式的網路請求效能至關重要的程式碼。
以下是建置時間增加的一些關鍵因素:
- 類別或文件的數量
- 每個類別的大小(程式碼行)
- 您的機器配置
- 初始建置與後續建置(後續建置通常比初始建置更快)
為了優化您的建置時間,請考慮模組化您的程式碼。
從效能監控插件v1.3.3開始,我們專注於在增量建置處理和庫輸入快取方面進行重大改進。要獲得最新的建置時間改進,請確保使用最新版本的外掛程式(v1.4.2) 。
請注意,如果您想避免較長的建置時間,可以在本地停用調試建置的效能監控插件。但是,不建議在生產建置中使用此方法,因為它可能會導致應用程式中的網路請求的效能測量失敗。
Android 效能監控使用字節碼偵測來提供一些開箱即用的功能,例如監控 HTTP/S 網路請求。作為編譯的一部分,該過程需要迭代應用程式的所有類別(包括依賴項),以檢測對於測量應用程式的網路請求效能至關重要的程式碼。
如果您在與效能監控插件整合後遇到諸如JSR/RET are not supported with computeFrames option
錯誤或類似錯誤,這可能是因為您也依賴與效能監控Gradle插件不相容的程式庫。
為了解決這個問題,您可以按照以下步驟排除不相容的類別/庫:
- 更新到最新版本的效能監控 Gradle 插件(最低v1.4.0 )。
- 將您的 Android Gradle 外掛程式版本更新至 v7.2.0 或更高版本。
- 將以下標誌添加到您的模組(應用程式層級)
build.gradle
檔案中,以排除不相容的類別/庫進行檢測:android { // ... androidComponents { onVariants(selector().all(), { instrumentation.excludes.add("example.incompatible.library") }) } }
要了解有關 Android Gradle 插件的Instrumentation
API 的exclude
屬性的更多信息,請參閱Instrumentation 。
當您因不相容的程式庫而遇到建置錯誤時,請提交一個 Github 問題,以便它們也可以被排除在效能監控插件中。
如果您為 Firebase 效能監控啟用了 BigQuery 集成,您的資料將在一天結束(太平洋時間)後 12 到 24 小時匯出到 BigQuery。
例如,4 月 19 日的資料將於 4 月 20 日中午 12:00 至午夜(所有日期和時間均為太平洋時間)在 BigQuery 中提供。
接近即時數據處理和顯示
Firebase效能監視過程收集了績效數據,這導致了Firebase控制台中的幾乎即時數據顯示。處理後的數據在收集後的幾分鐘內顯示在控制台中,因此“接近實時”一詞。
若要利用近乎即時的資料處理,請確保您的應用程式使用即時相容SDK版本。
為了利用近乎即時的數據處理,您只需要確保應用程式使用與即時數據處理相容的效能監視SDK版本。
這些是即時相容的SDK版本:
- iOS - v7.3.0或以後
- TVOS - v8.9.0或以後
- Android - v19.0.10或更高版本(或firebase android bom v26.1.0或更高版本)
- 網路- v7.14.0或更高版本
請注意,我們始終建議使用最新版本的SDK,但是上面列出的任何版本都將使效能監視能夠接近即時處理您的資料。
這些是與即時數據處理相容的SDK版本:
- iOS - v7.3.0或以後
- TVOS - v8.9.0或以後
- Android - v19.0.10或更高版本(或firebase android bom v26.1.0或更高版本)
- 網路- v7.14.0或更高版本
請注意,我們始終建議使用最新版本的SDK,但是上面列出的任何版本都將使效能監視能夠接近即時處理您的資料。
如果您的應用程式不使用即時相容SDK版本,則您仍然會在Firebase控制台中看到所有應用程式的效能資料。但是,從收集到其收集之時,績效數據的顯示將延遲約36小時。
是的!無論應用程式實例使用哪個SDK版本,您都會看到所有使用者的效能資料。
但是,如果您正在查看最新資料(不到約36個小時的資料),則顯示的資料來自使用即時相容SDK版本的應用程式實例的使用者。但是,非續簽資料包括來自應用程式所有版本的效能資料。
聯繫火箱支持
如果您接觸Firebase支持,請務必包含Firebase App ID。在設定的應用程式卡中找到您的firebase應用程式ID。