本頁面提供開始使用 Performance Monitoring 或使用 Performance Monitoring 功能和工具的疑難排解提示。
初步檢查疑難排解
以下兩項是一般最佳做法,建議在進一步疑難排解前使用。
1. 查看效能事件的記錄訊息
查看記錄訊息,確認 Performance Monitoring SDK 會擷取效能事件。
如何查看效能事件的記錄訊息
將 <meta-data>
元素新增至應用程式的 AndroidManifest.xml
檔案,即可在建構期間啟用 Performance Monitoring 的偵錯記錄功能,如下所示:
<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 或 Performance Monitoring 出現已知的服務中斷情形,請查看 Firebase 狀態資訊主頁。
開始使用 Performance Monitoring
如果您是開始使用 Performance Monitoring (iOS+ | Android | 網頁版),請參考下列疑難排解提示,解決 Firebase 偵測 SDK 或在 Firebase 控制台中顯示您的第一項成效資料的問題。
已將 SDK 新增至應用程式,但控制台仍顯示新增 SDK
Firebase 可在收到來自應用程式的事件資訊 (例如應用程式互動) 時,偵測您是否成功將 Performance Monitoring SDK 新增至應用程式。通常會在啟動應用程式後的 10 分鐘內,Firebase 控制台的「Performance Monitoring」(效能) 資訊主頁會顯示「偵測到 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:1.4.2'
)。
請確定
外掛程式
並未停用,或是透過下列任一標記:
- 模組 (應用程式層級)
build.gradle
檔案中的 instrumentationEnabled
gradle.properties
檔案中的 firebasePerformanceInstrumentationEnabled
透過 AndroidManifest.xml
檔案中下列任一標記,確認 Performance Monitoring SDK 是否未停用:
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:1.4.2'
)。
請確定
外掛程式
並未停用,或是透過下列任一標記:
- 模組 (應用程式層級)
build.gradle
檔案中的 instrumentationEnabled
gradle.properties
檔案中的 firebasePerformanceInstrumentationEnabled
透過 AndroidManifest.xml
檔案中下列任一標記,確認 Performance Monitoring SDK 是否未停用:
firebase_performance_collection_enabled
firebase_performance_collection_deactivated
確認 Performance Monitoring 未在執行階段停用。
如果在應用程式中找不到已停用的功能,請與 Firebase 支援團隊聯絡。
效能資訊主頁缺少畫面追蹤記錄資料
如果缺少畫面轉譯追蹤記錄的資料,請嘗試下列疑難排解步驟:
請確認您使用的是最新版的 Android SDK (21.0.1 版)。畫面轉譯追蹤記錄僅適用於 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:1.4.2'
)。
請確定
外掛程式
並未停用,或是透過下列任一標記:
- 模組 (應用程式層級)
build.gradle
檔案中的 instrumentationEnabled
gradle.properties
檔案中的 firebasePerformanceInstrumentationEnabled
查看記錄訊息,確保 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:1.4.2'
)。
請確定
外掛程式
並未停用,或是透過下列任一標記:
- 模組 (應用程式層級)
build.gradle
檔案中的 instrumentationEnabled
gradle.properties
檔案中的 firebasePerformanceInstrumentationEnabled
檢查網路程式庫不相容。對於使用下列網路程式庫的網路要求,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
標頭的網路要求。
常見問題
專案首頁「效能」資訊卡中的「重大問題」受到了什麼影響?
我們已將「主要問題」替換為「近期快訊」,做為上次快訊的後續介紹,系統會在達到您設定的門檻時自動通知您。問題現已淘汰並替換為快訊。
「效能」資訊卡頂端的應用程式選取器會篩選「Recent Alerts」下方的快訊項目。系統只會顯示所選應用程式最近的三則快訊。
如要進一步瞭解快訊,請參閱「設定效能問題快訊」。
在主控台中設定問題閾值的能力如何?
Performance Monitoring 為指標超過定義門檻的指標支援快訊。為避免與這些可設定效能指標的門檻混淆,我們移除了為問題設定門檻的功能。
Firebase 控制台中的詳細資料和指標資訊怎麼了?
我們以全新設計的集中式使用者介面 (UI) 取代「詳細資料」和「指標」頁面,藉此改善疑難排解問題的方式。這個新的疑難排解 UI 提供的核心功能與「詳細資料」和「指標」相同。如要進一步瞭解疑難排解,請參閱「查看特定追蹤記錄的其他資料」。
為什麼樣本數量與預期不符?
Performance Monitoring 會從應用程式使用者的裝置收集效能資料,如果您的應用程式有多位使用者,或者應用程式會產生大量效能活動,Performance Monitoring 可能會將資料收集範圍限制在部分裝置,以減少已處理的事件數量。這些限制相當高,因此即使事件數量較少,指標值仍能反映使用者的應用程式體驗。
為管理我們收集的資料量,Performance Monitoring 會使用以下取樣選項:
裝置端頻率限制:為避免裝置突然傳送突然爆發的追蹤記錄,我們會將裝置傳送的程式碼和網路要求追蹤記錄數量限制為每 10 分鐘 300 個事件。這種做法可避免裝置因循環檢測而傳送大量效能資料,並防止單一裝置在測量效能時出現偏差。
動態取樣:針對所有應用程式使用者,Performance Monitoring 會針對程式碼追蹤收集約 1 億筆事件的事件,以及 1 億筆網路要求追蹤記錄的限制。系統會在裝置端擷取動態取樣率 (使用 Firebase 遠端設定),判斷隨機裝置是否應擷取並傳送追蹤記錄。未選取要取樣的裝置不會傳送任何事件。動態取樣率會針對特定應用程式進行調整,確保收集到的資料總量低於限制。
使用者工作階段會從使用者的裝置傳送額外的詳細資料,因此需要更多資源來擷取及傳送資料。為了盡量減少使用者工作階段的影響,Performance Monitoring 也可能會限制工作階段的數量。
伺服器端頻率限制:為確保應用程式不會超過取樣限制,Performance Monitoring 可能會使用伺服器端取樣功能,捨棄從裝置收到的部分事件。儘管這類限制並未改變指標的有效性,但可能會導致模式發生些微變動,包括:
- 追蹤記錄數量可能會與程式碼片段的執行次數不同。
- 在程式碼中緊密耦合的追蹤記錄,可能會有不同的樣本數量。
控制台的「問題」分頁怎麼了?
「問題」分頁換成了「快訊」功能。只要超過設定的門檻,系統就會自動通知您。您不再需要手動查看 Firebase 控制台來判斷門檻狀態。如要瞭解快訊功能,請參閱「設定效能問題快訊」一文。
控制台的「裝置上」和「網路」分頁有什麼影響?
如何查看網頁上的追蹤記錄?
我們重新設計了 Firebase 控制台的 Performance Monitoring 部分,讓「Dashboard」(資訊主頁) 分頁能夠在同一個位置顯示主要指標和所有追蹤記錄。在重新設計的過程中,我們移除了「裝置上」和「網路」頁面。
「Dashboard」(資訊主頁) 分頁標籤底部的追蹤記錄表,當中含有與「On device」(裝置) 和「Network」(網路) 分頁標籤相同的所有資訊,但新增了一些功能,包括依特定指標百分比變化排序追蹤記錄的功能。如要查看特定追蹤記錄的「所有」指標和資料,請按一下追蹤記錄表格中的追蹤記錄名稱。
在追蹤記錄表的下列子分頁中查看追蹤記錄:
- 網路要求追蹤記錄 (現成和自訂) -「聯播網請求」子分頁
- 自訂程式碼追蹤:「自訂追蹤」子分頁
- 應用程式啟動、應用程式前景、應用程式在背景中的追蹤記錄 - 「自訂追蹤記錄」子分頁
- 畫面轉譯追蹤記錄 -「螢幕轉譯」子分頁
- 網頁載入追蹤:「網頁載入」子分頁
如要進一步瞭解追蹤記錄表格並查看指標與資料,請前往主控台總覽頁面 (iOS+ | Android | 網頁版)。
為什麼緩慢影格和凍結影格的數量與預期不符?
轉譯速度緩慢的影格和凍結影格,是以假設的裝置刷新率為 60Hz 計算。如果裝置的刷新率低於 60 Hz,每個影格的轉譯時間會比較慢,因為每秒算繪的影格數較少。轉譯時間較慢會導致系統回報緩慢影格或凍結影格的數量,因為轉譯速度變慢或凍結。不過,如果裝置刷新率高於 60 Hz,每個影格的轉譯時間都會更快。這可能會導致回報的緩慢影格或凍結影格數量較少。這是 Performance Monitoring SDK 目前的限制。
為什麼我的片段追蹤記錄比其他追蹤記錄少?
Performance Monitoring 會對裝置上收集的所有事件進行事件取樣。這個方法讓我們能從使用者裝置收集到最低限度的事件,用於提供效能指標。
當應用程式的轉譯效能發生問題時,我如何收到通知?
Performance Monitoring 可讓您針對自己重視的指標設定快訊。對於產生的畫面轉譯追蹤記錄,您可以設定快訊,讓系統在緩慢影格和凍結影格百分比超過您設定的門檻時通知您。
啟用 Performance Monitoring Gradle 外掛程式後,我的建構時間偏高。該如何改善?
Android 適用的 Performance Monitoring 使用位元碼檢測功能提供一些立即可用的功能,例如監控 HTTP/S 網路要求。在編譯過程中,此程序需要反覆執行應用程式的所有類別 (包括依附元件),才能檢測對評估應用程式網路要求效能至關重要的程式碼。
以下列舉幾個縮短建構時間的關鍵因素:
- 課程或檔案數量
- 每個類別的大小 (程式碼行)
- 您的機器設定
- 初始建構與後續建構 (後續建構作業的執行速度通常比初始版本快)
如要最佳化建構時間,請考慮將程式碼模組化。
從 Performance Monitoring 外掛程式的 1.3.3 版開始,我們專注於為程式庫輸入內容的漸進式建構處理和快取作業進行大幅改善。如要取得最新的建構時間改善內容,請務必使用最新版的外掛程式 (1.4.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 外掛程式 (最低版本需求為 v1.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 效能監控功能會在發生當下收集的效能資料,以近乎即時的方式顯示在 Firebase 控制台。處理過的資料會在幾分鐘內顯示在主控台中,因此也就是「近乎即時」。
如要利用近乎即時的資料處理功能,請確保應用程式使用即時相容的 SDK 版本。
如何取得近乎即時的應用程式效能資料?
如要利用近乎即時的資料處理功能,只要確認應用程式使用的 Performance Monitoring SDK 版本與即時資料處理相容即可。
以下是即時相容的 SDK 版本:
- iOS - 7.3.0 以上版本
- tvOS - 8.9.0 以上版本
- Android - v19.0.10 以上版本 (或 Firebase Android BoM v26.1.0 以上版本)
- 網頁版 - 7.14.0 以上版本
請注意,我們建議您一律使用最新版 SDK,但上述任何版本都能讓 Performance Monitoring 以近乎即時的方式處理您的資料。
哪些版本的 Performance Monitoring SDK 可視為即時相容?
這些是與即時資料處理相容的 SDK 版本:
- iOS - 7.3.0 以上版本
- tvOS - 8.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。前往 settings 專案設定的「Your apps」資訊卡,即可找到 Firebase 應用程式 ID。