iOS+
Android
網頁版
本頁提供疑難排解提示,協助您開始使用 Performance Monitoring ,或使用 Performance Monitoring 功能和工具。
疑難排解的初步檢查
以下兩項檢查是建議所有人在進一步排解問題前採取的通用最佳做法。
1. 檢查記錄訊息中的效能事件
檢查記錄訊息,確認 Performance Monitoring SDK 是否正在擷取效能事件。
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 SDK 會在本地批次處理事件,然後定期傳送至 Firebase。也就是說,應用程式互動與 Firebase 收到應用程式事件資訊之間會有延遲。
如果您仍在本地開發,請嘗試產生更多事件來收集資料:
在本機環境中提供及查看 Web 應用程式。
載入網站的子網頁、與應用程式互動,以及/或觸發網路要求,即可產生事件。網頁載入後,請務必讓瀏覽器分頁保持開啟至少 10 秒。
請確認Firebase 設定物件 已正確新增至應用程式,且您未修改該物件。請檢查下列事項:
設定物件中的 Firebase 網頁應用程式 ID (appId
) 適用於您的應用程式。如要找出 Firebase 應用程式 ID,請前往settings 專案設定 的「您的應用程式」 資訊卡。
如果應用程式中的設定物件有任何問題,請嘗試下列做法:
刪除應用程式中目前的設定物件。
按照這些操作說明 取得新的設定物件,並新增至網路應用程式。
如果 SDK 正在記錄事件,且一切設定似乎都正確無誤,但您仍未看到 SDK 偵測訊息或已處理的資料 (2 小時後),請與 Firebase 支援團隊聯絡 。
應用程式未 記錄事件:
疑難排解步驟
請確認應用程式已Performance Monitoring 正確初始化 SDK。
確認 Performance Monitoring SDK 未 透過下列標記停用:
performance.instrumentationEnabled
請務必停用瀏覽器快取,否則瀏覽器可能不會採用任何新的插碼設定。
關閉網頁分頁,然後重新開啟。再次檢查記錄。
如果您剛在應用程式中新增 Performance Monitoring SDK,可能需要完整重新啟動應用程式,SDK 才會開始運作。
如果找不到應用程式中已停用的項目,請與 Firebase 支援團隊聯絡 。
一般疑難排解
如果您已成功新增 SDK,並在應用程式中使用 Performance Monitoring ,下列疑難排解提示可協助您解決與 Performance Monitoring 功能和工具相關的一般問題。
應用程式未記錄效能事件
如果沒有看到效能事件的記錄訊息 ,請嘗試下列疑難排解步驟:
請確認應用程式已Performance Monitoring 正確初始化 SDK。
確認 Performance Monitoring SDK 未 透過下列標記停用:
performance.instrumentationEnabled
請務必停用瀏覽器快取,否則瀏覽器可能不會採用任何新的插碼設定。
關閉網頁分頁,然後重新開啟。再次檢查記錄。
如果您剛在應用程式中新增 Performance Monitoring SDK,可能需要完整重新啟動應用程式,SDK 才會開始運作。
如果找不到應用程式中已停用的項目,請與 Firebase 支援團隊聯絡 。
成效資訊主頁缺少自訂追蹤資料
您是否看到自動收集的追蹤記錄成效資料,但沒有自訂程式碼追蹤記錄的資料 ?請嘗試下列疑難排解步驟:
檢查透過 Trace API 檢測的自訂程式碼追蹤設定,特別是下列項目:
自訂程式碼追蹤和自訂指標的名稱必須符合下列規定:開頭或結尾不得有空白字元,開頭不得有底線 (_
) 字元,且長度不得超過 32 個字元。
所有追蹤記錄都必須啟動及停止。如果追蹤記錄未啟動、未停止或在啟動前停止,系統就不會記錄。
請注意,如果您使用 record()
方法,則不需要明確啟動或停止追蹤。
請確認Performance Monitoring 資料收集未 透過下列旗標 停用:
檢查記錄訊息 ,確認 Performance Monitoring 正在記錄預期的自訂程式碼追蹤記錄。
如果 Performance Monitoring 正在記錄事件,但 24 小時後仍未顯示任何資料,請與 Firebase 支援團隊聯絡 。
成效資訊主頁缺少網路要求資料
如果缺少網路要求資料,請注意下列事項:
常見問題
iOS+
Android
網頁版
專案首頁的「成效」資訊卡中,「熱門問題」發生了什麼事?
我們最近推出了快訊功能,會在您設定的門檻遭到突破時自動通知您,因此我們將「重大問題」 替換為「近期快訊」 。問題現已淘汰 ,並由快訊取代。
成效資訊卡頂端的應用程式選取器會篩選「近期快訊」 下方的快訊項目。系統只會顯示所選應用程式最近的三則快訊。
如要進一步瞭解警示,請參閱「設定效能問題警示 」。
主控台中的問題閾值設定功能發生了什麼事?
Performance Monitoring 支援快訊 ,可針對超過定義門檻的指標發出通知。為避免與可設定的效能指標門檻混淆,我們移除了問題 的門檻設定功能。
Firebase 控制台中的「詳細資料」和「指標」資訊發生了什麼事?
我們已將「詳細資料」和「指標」頁面替換為全新設計的集中式使用者介面,藉此改善排解問題的方式。這個新的疑難排解 UI 提供與「詳細資料」和「指標」相同的核心功能。如要進一步瞭解如何排解問題,請參閱「查看特定追蹤記錄的更多資料 」。
為什麼樣本數與預期不符?
Performance Monitoring 會從應用程式使用者的裝置收集效能資料。如果應用程式有大量使用者,或產生大量效能活動,Performance Monitoring 可能會限制資料收集範圍,只收集部分裝置的資料,以減少處理的事件數量。這些限制相當寬鬆,因此即使事件較少,指標值仍能代表使用者的應用程式體驗。
為管理我們蒐集的資料量,Performance Monitoring 會使用下列抽樣選項:
裝置端速率限制 :為避免裝置突然傳送大量追蹤記錄,我們將裝置每 10 分鐘傳送的程式碼和網路要求追蹤記錄數量限制為 300 個事件。這種做法可避免裝置出現迴圈式插樁,導致傳送大量效能資料,並防止單一裝置影響效能評估結果。
動態取樣 :Performance Monitoring 每天為每位應用程式使用者收集有限數量的程式碼追蹤記錄和網路要求追蹤記錄。裝置會擷取動態取樣率 (使用 Firebase Remote Config ),判斷隨機裝置是否應擷取及傳送追蹤記錄。未選取取樣的裝置不會傳送任何事件。動態取樣率會根據應用程式調整,確保收集的資料總量不超過上限。
使用者工作階段會從使用者裝置傳送額外的詳細資料,因此需要更多資源來擷取及傳送資料。為盡量減少使用者工作階段的影響,Performance Monitoring 也可能會限制工作階段數量。
伺服器端速率限制 :為確保應用程式不會超出取樣限制,Performance Monitoring 可能會使用伺服器端取樣功能,捨棄從裝置收到的部分事件。雖然這類限制不會影響指標的有效性,但可能會導致模式出現微小變化,包括:
追蹤記錄的數量可能與程式碼片段的執行次數不同。
程式碼中緊密耦合的追蹤記錄可能各有不同數量的樣本。
注意: 隨著 Performance Monitoring 不斷發展,特定取樣限制及其適用情形可能會有所變更。
主控台的「問題」 分頁發生什麼事?
我們已推出「快訊」功能,取代「問題」分頁。當您設定的門檻遭到突破時,系統會自動通知您。您不必再手動檢查 Firebase 控制台,即可判斷起付額度狀態。如要瞭解快訊,請參閱「設定效能問題快訊 」。
控制台中的「裝置端」 和「網路」 分頁標籤發生了什麼事?
如何查看這些網頁上的追蹤記錄?
我們重新設計了 Firebase 主控台的「Performance Monitoring 」部分,現在「資訊主頁」 分頁會顯示主要指標和所有追蹤記錄。在重新設計的過程中,我們移除了「裝置上」 和「網路」 頁面。
「資訊主頁」分頁底部的追蹤記錄表格與「裝置上」和「網路」分頁顯示的資訊完全相同,但新增了幾項功能,包括可依特定指標的百分比變化排序追蹤記錄。 如要查看特定追蹤記錄的所有 指標和資料,請按一下追蹤記錄表格中的追蹤記錄名稱。
在追蹤記錄表格的下列子分頁中查看追蹤記錄:
網路要求追蹤記錄 (包括預設和自訂) -「網路要求」 子分頁
自訂程式碼追蹤記錄 -「自訂追蹤記錄」 子分頁
應用程式啟動、應用程式在前台、應用程式在背景追蹤記錄 -「自訂追蹤記錄」 子分頁
畫面轉譯追蹤記錄 -「畫面轉譯」 子分頁
網頁載入追蹤記錄 -「載入網頁」 子分頁
如要進一步瞭解追蹤記錄表格,以及如何查看指標和資料,請參閱控制台總覽頁面 (iOS+ | Android | 網站 )。
為什麼緩慢和凍結影格的數量與預期不符?
系統會假設裝置的畫面更新率為 60 Hz,計算顯示速度緩慢的影格和凍結影格。如果裝置的螢幕刷新率低於 60 Hz,由於每秒轉譯的影格較少,每個影格的轉譯時間就會較慢。轉譯時間越長,系統回報的緩慢或凍結影格就越多,因為會有更多影格轉譯速度緩慢或凍結。不過,如果裝置的更新率高於 60Hz,每個影格的算繪時間就會更快。這可能會導致系統回報的緩慢或凍結影格較少。這是 Performance Monitoring SDK 目前的限制。
如何將較小的命名空間 Performance Monitoring JS SDK (「獨立」SDK) 新增至網頁應用程式?
如果應用程式中只有 Performance Monitoring 這項 Firebase 產品,您可以視需要使用獨立的 Performance Monitoring SDK (以及下方的建議標頭指令碼):
使用命名空間程式庫
縮減 SDK 套件大小
延後初始化 SDK,直到網頁載入完畢為止
如要在應用程式中加入獨立 Performance Monitoring SDK,並將初始化作業延後至網頁載入後再執行,請按照下列步驟操作:
在索引檔案的標頭中新增下列指令碼。
請務必新增應用程式的 Firebase 專案設定物件 。
( function ( sa , fbc ){ function load ( f , c ){ var a = document . createElement ( 'script' );
a . async = 1 ; a . src = f ; var s = document . getElementsByTagName ( 'script' )[ 0 ];
s . parentNode . insertBefore ( a , s );} load ( sa );
window . addEventListener ( 'load' , function (){ firebase . initializeApp ( fbc ) . performance ()});
})( performance_standalone , firebaseConfig );
其中:
performance_standalone :
'https://www.gstatic.com/firebasejs/11.9.1/firebase-performance.js'
firebaseConfig 是應用程式的 Firebase 設定物件
上述指令碼會非同步載入獨立 SDK,然後在視窗的 onload
事件觸發後 初始化 Firebase。由於瀏覽器在您初始化 SDK 時已回報載入指標,因此這項策略可減少 SDK 對網頁載入指標 的影響。
注意: 使用獨立 Performance Monitoring SDK 時,您不必明確納入 Firebase 核心 SDK,因為獨立 SDK 已包含自己的輕量型 Firebase 核心 SDK。
瞭解獨立 Performance Monitoring SDK 和標頭指令碼
這個獨立 SDK 已針對大小進行最佳化,壓縮後約為 10 KB。除了 Firebase Performance Monitoring 的所有功能外,也包含 Firebase Core SDK 的最低功能組合。
Firebase Performance Monitoring 使用 fetch
和 Promise
API,但舊版瀏覽器不支援這些 API。這些 API 的 Polyfill 包含在標準 Firebase Performance Monitoring JS SDK 中,但為了縮減大小,獨立版 SDK 會省略這些項目。
Performance Monitoring SDK 部分依賴 Resource Timing API ,從瀏覽器取得網頁載入指標。
以下程式碼片段會細分標頭指令碼,其中包含延遲 SDK 初始化作業的程式碼:
( function ( sdkSource , firebaseConfigObject ) {
function load ( f , c ) {
// Creates a script tag to load the standalone SDK
var sdkScript = document . createElement ( 'script' );
// Sets it to an async script so that it doesn 't interfere with page load
sdkScript . async = 1 ;
// Sets the source of the script
sdkScript . src = f ;
// Inserts the script into the head of the page
var s = document . getElementsByTagName ( 'script' )[ 0 ];
s . parentNode . insertBefore ( sdkScript , s );
}
// Calls the load method
load ( sdkSource );
// Initializes the SDK only when the onload method is called
window . addEventListener ( 'load' , function () {
firebase . initializeApp ( firebaseConfigObject ) . performance ();
});
})( performance_standalone , firebaseConfig );
其中:
performance_standalone 為 'https://www.gstatic.com/firebasejs/11.9.1/firebase-performance-standalone.js'
firebaseConfig 是應用程式的 Firebase 設定物件
近乎即時的資料處理和顯示
什麼是「近乎即時」的成效資料?
Firebase Performance Monitoring 會在收集到成效資料時立即處理,因此 Firebase 控制台會顯示近乎即時的資料。處理後的資料會在收集後幾分鐘內顯示在控制台中,因此稱為「近乎即時」。
如要使用近乎即時的資料處理功能,請確保應用程式使用與即時功能相容的 SDK 版本 。
如何取得應用程式的近乎即時成效資料?
如要使用近乎即時的資料處理功能,只要確保應用程式使用的 Performance Monitoring SDK 版本與即時資料處理功能相容即可。
以下是支援即時效能資料的 SDK 版本:
iOS - v7.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 - v7.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。在settings 「專案設定」 的「您的應用程式」 資訊卡中,找到 Firebase 應用程式 ID。