iOS 以上版本
Android
網頁版
本頁面提供開始使用 Performance Monitoring 或使用 Performance Monitoring 功能和工具的疑難排解提示。
初步檢查疑難排解
以下兩項是一般最佳做法,建議在進一步疑難排解前使用。
1. 查看效能事件的記錄訊息
查看記錄訊息,確認 Performance Monitoring SDK 會擷取效能事件。
如何查看效能事件的記錄訊息
開啟瀏覽器的開發人員工具 (例如 Chrome 開發人員工具的網路分頁 或 Firefox 網路監視器 )。
在瀏覽器中重新整理網頁應用程式。
檢查記錄訊息,看看是否有任何錯誤訊息。
幾秒後,請在瀏覽器的開發人員工具中尋找對 firebaselogging.googleapis.com
的網路呼叫。如果有該網路呼叫,即表示瀏覽器正在傳送效能資料至 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 SDK 會先在本機批次處理事件,然後定期將事件傳送至 Firebase。這表示應用程式互動與 Firebase 從應用程式接收事件資訊之間會有延遲。
如果您在本機仍在開發,請嘗試產生更多用於資料收集的事件:
在本機環境中提供及檢視網頁應用程式。
為網站載入子頁面、與應用程式互動及/或觸發網路要求,藉此產生事件。網頁載入後,請務必讓瀏覽器分頁保持開啟至少 10 秒。
請確認您的 Firebase 設定物件 已正確新增至應用程式,且您並未修改該物件。具體來說,請檢查下列事項:
設定物件中的 Firebase 網頁應用程式 ID (appId
) 適用於您的應用程式。您可以前往 settings 專案設定 ,從「您的應用程式」 資訊卡中找到 Firebase 應用程式 ID。
如果應用程式中的設定物件似乎有誤,請嘗試下列做法:
刪除應用程式中現有的設定物件。
請按照這些操作說明 取得新的設定物件,並將其加入網頁應用程式。
如果 SDK 會記錄事件,且所有設定似乎都設定正確,但您仍未看到 SDK 偵測訊息或處理的資料 (2 小時後),請與 Firebase 支援團隊聯絡 。
應用程式「不會」 記錄事件:疑難排解步驟
確認 Performance Monitoring SDK 已在應用程式中正確初始化 。
請確認「效能監控 SDK」 「並未」透過下列標記停用:
performance.instrumentationEnabled
請確定瀏覽器快取功能已 停用,否則瀏覽器可能不會納入任何新的檢測設定。
關閉網頁分頁,然後重新開啟。再次檢查記錄。
如果您才剛在應用程式中新增 Performance Monitoring SDK,則可能需要完全重新啟動應用程式,SDK 才會開始運作。
如果在應用程式中找不到已停用的功能,請與 Firebase 支援團隊聯絡 。
一般疑難排解
如果您已成功新增 SDK,並在應用程式中使用 Performance Monitoring,請參閱下列疑難排解提示,解決涉及 Performance Monitoring 功能和工具的一般問題。
應用程式未記錄效能事件
如未看到效能事件的記錄訊息 ,請嘗試下列疑難排解步驟:
確認 Performance Monitoring SDK 已在應用程式中正確初始化 。
請確認「效能監控 SDK」 「並未」透過下列標記停用:
performance.instrumentationEnabled
請確定瀏覽器快取功能已 停用,否則瀏覽器可能不會納入任何新的檢測設定。
關閉網頁分頁,然後重新開啟。再次檢查記錄。
如果您才剛在應用程式中新增 Performance Monitoring SDK,則可能需要完全重新啟動應用程式,SDK 才會開始運作。
如果在應用程式中找不到已停用的功能,請與 Firebase 支援團隊聯絡 。
效能資訊主頁缺少自訂追蹤記錄資料
您是否看到自動收集的追蹤記錄效能資料,而非自訂程式碼追蹤記錄 的資料?請嘗試下列疑難排解步驟:
檢查透過 Trace API 檢測的自訂程式碼追蹤記錄設定,尤其是以下設定:
自訂程式碼追蹤記錄和自訂指標的名稱必須符合下列規定:開頭或結尾不得空白、開頭不得為底線 (_
) 字元,且長度上限為 32 個半形字元。
您必須開始及停止所有追蹤記錄。系統不會記錄任何未啟動、未停止或已停止的追蹤記錄。
請注意,如果您使用 record()
方法,就不需要明確啟動或停止追蹤記錄。
請確保Performance Monitoring 資料收集功能不會 透過下列標記 停用:
查看記錄訊息 ,確保 Performance Monitoring 會記錄預期的自訂程式碼追蹤記錄。
如果 Performance Monitoring 會記錄事件,但 24 小時後系統未顯示資料,請與 Firebase 支援團隊聯絡 。
效能資訊主頁缺少網路要求資料
如果缺少網路要求資料,請注意下列事項:
常見問題
iOS 以上版本
Android
網頁版
專案首頁「效能」資訊卡中的「重大問題」受到了什麼影響?
我們已將「主要問題」 替換為「近期快訊」 ,做為上次快訊的後續介紹,系統會在達到您設定的門檻時自動通知您。問題現已淘汰 並替換為快訊。
「效能」資訊卡頂端的應用程式選取器會篩選「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 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/10.12.2/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 核心 SDK 功能。
Firebase 效能監控功能使用 fetch
和 Promise
API,這些 API 不適用於舊版瀏覽器。這些 API 的 polyfill 包含在標準 Firebase Performance Monitoring JS SDK 中,但為了縮減大小,獨立 SDK 會省略這些 API。
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/10.12.2/firebase-performance-standalone.js'
firebaseConfig 是應用程式的 Firebase 設定物件
近乎即時的資料處理和顯示
「近乎即時」的成效資料是什麼意思?
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。