iOS+
Android
網頁版
本頁面提供疑難排解提示,協助您開始使用 Performance Monitoring 或 Performance Monitoring 功能和工具。
首先檢查疑難排解問題
以下兩項檢查是一般最佳做法,建議您在進一步排解問題前先進行檢查。
1. 檢查成效事件的記錄訊息
請檢查記錄訊息,確認 Performance Monitoring SDK 是否擷取了效能事件。
2. 查看 Firebase 狀態資訊主頁
如有已知的 Firebase 或 Performance Monitoring 中斷情形,請查看 Firebase 狀態資訊主頁 。
開始使用 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 從應用程式接收事件資訊之間,會有一段延遲時間。
如果您仍在本機開發,請嘗試產生更多事件以便收集資料:
在本機環境中提供及查看網路應用程式。
載入網站的子頁面、與應用程式互動,以及/或觸發網路要求,藉此產生事件。請務必在頁面載入後,將瀏覽器分頁保持開啟狀態至少 10 秒。
請確認 Firebase 設定物件 已正確新增至應用程式,且您未修改該物件。具體來說,請檢查下列項目:
設定物件中的 Firebase Web 應用程式 ID (appId
) 與應用程式相符。您可以在 settings 專案設定 的「您的應用程式」 資訊卡中找到 Firebase 應用程式 ID。
如果應用程式中的設定物件似乎有問題,請嘗試以下做法:
刪除應用程式中目前的設定物件。
請按照這些操作說明 取得新的設定物件,並將其新增至您的網路應用程式。
如果 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),藉此改善排解問題的方式。這個新的疑難排解 UI 提供與「詳細資料」和「指標」相同的核心功能。如要進一步瞭解如何排解問題,請參閱「查看特定追蹤記錄的更多資料 」。
為什麼樣本數與預期不符?
Performance Monitoring 會從應用程式使用者的裝置收集效能資料。如果應用程式有許多使用者,或是應用程式產生大量效能活動,Performance Monitoring 可能會將資料收集作業限制在部分裝置上,以減少所處理事件的數量。這些上限值相當高,即使事件數量較少,指標值仍可代表使用者的應用程式體驗。
為管理收集的資料量,Performance Monitoring 會使用下列取樣選項:
裝置內的速率限制 :為避免裝置突然大量傳送追蹤記錄,我們將裝置傳送的程式碼和網路要求追蹤記錄數量限制為每 10 分鐘 300 個事件。這種做法可防止裝置受到迴圈檢測工具的影響,因為迴圈檢測工具會傳送大量效能資料,並防止單一裝置扭曲效能測量結果。
動態取樣 :Performance Monitoring 每天會從所有應用程式使用者收集有限數量的程式碼追蹤記錄和網路要求追蹤記錄。系統會在裝置上擷取動態取樣率 (使用 Firebase Remote Config ),以判斷隨機裝置是否應擷取及傳送追蹤記錄。未選取用於取樣的裝置不會傳送任何事件。動態取樣率是應用程式專屬的,會調整以確保收集的資料總量維持在限制以下。
使用者工作階段會從使用者的裝置傳送額外的詳細資料,因此需要更多資源才能擷取及傳送資料。為盡量減少使用者工作階段的影響,Performance Monitoring 也可能會限制工作階段數量。
伺服器端速率限制 :為確保應用程式不會超出取樣限制,Performance Monitoring 可能會使用伺服器端取樣功能,捨棄從裝置收到的部分事件。雖然這類限制不會影響指標的有效性,但可能會造成模式出現輕微變化,包括:
追蹤記錄的數量可能與程式碼執行次數不同。
在程式碼中緊密連結的追蹤記錄,每個追蹤記錄的樣本數量可能不同。
注意: 隨著 Performance Monitoring 演進,特定取樣限制和應用方式可能會有所變更。
主控台的「Issues」 分頁發生什麼問題?
我們已將「問題」分頁替換為「警示」,當您設定的閾值超出時,系統會自動通知您。您不再需要手動查看 Firebase 控制台,即可判斷門檻狀態。如要瞭解快訊,請參閱「設定效能問題快訊 」。
控制台中的「裝置」 和「網路」 分頁發生什麼問題?如何查看這些頁面上的追蹤記錄?
我們已重新設計 Firebase 主控台的 Performance Monitoring 部分,讓「資訊主頁」 分頁可在單一空間顯示重要指標和所有追蹤記錄。在重新設計的過程中,我們移除了「裝置」 和「網路」 頁面。
「Dashboard」 分頁底部的追蹤記錄表格會顯示「On device」 和「Network」 分頁顯示的所有資訊,但會加入一些額外功能,包括依特定指標的百分比變更排序追蹤記錄。如要查看特定追蹤記錄的所有 指標和資料,請按一下追蹤記錄表中的追蹤記錄名稱。
您可以在追蹤記錄表的下列子分頁中查看追蹤記錄:
網路要求追蹤記錄 (內建和自訂) - 網路要求 子分頁
自訂程式碼追蹤記錄 -「自訂追蹤記錄」 子分頁
應用程式啟動、應用程式前景、應用程式背景追蹤記錄 - 自訂追蹤記錄 子分頁
畫面轉譯追蹤記錄 -「畫面轉譯」 子分頁
網頁載入追蹤記錄 - 網頁載入 子分頁
如要進一步瞭解追蹤記錄表、查看指標和資料,請前往控制台總覽頁面 (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.0.2/firebase-performance.js'
firebaseConfig 是應用程式的 Firebase 設定物件
上述指令碼會非同步載入獨立 SDK,然後在視窗的 onload
事件觸發後 初始化 Firebase。這項策略可降低 SDK 對網頁載入指標 的影響,因為瀏覽器在您初始化 SDK 時已回報其載入指標。
注意: 使用獨立 Performance Monitoring SDK 時,請勿明確加入 Firebase 核心 SDK,因為獨立 SDK 已包含其專屬的輕量級 Firebase 核心 SDK。
瞭解獨立 Performance Monitoring SDK 和標頭指令碼
這個獨立 SDK 已針對大小進行最佳化,經過 GZip 壓縮後,大小約為 10 KB。它包含 Firebase Performance Monitoring 的所有功能,以及 Firebase 核心 SDK 的最低功能組合。
Firebase Performance Monitoring 使用 fetch
和 Promise
API,這些 API 不適用於舊版瀏覽器。標準 Firebase Performance Monitoring JS SDK 包含這些 API 的 polyfill,但為了縮減大小,獨立 SDK 會省略這些 polyfill。
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.0.2/firebase-performance-standalone.js'
firebaseConfig 是應用程式的 Firebase 設定物件
近乎即時的資料處理和顯示
「近乎即時」效能資料是什麼意思?
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。在 settings 專案設定 的「您的應用程式」 資訊卡中,找出您的 Firebase 應用程式 ID。