使用資料庫分析器評估 Firebase Realtime Database 的效能 Firebase CLI 的內建工具。分析器工具 然後在資料庫內的活動量產生 詳細報表使用詳細報表來排解 資料庫效能、找出問題領域,並減少未建立索引的查詢。
建立個人資料
開始剖析 Firebase Realtime Database 之前,請確認您使用的是 最新版的 Firebase CLI 您已初始化要剖析的資料庫和專案。注意事項 您必須是該專案的編輯者或擁有者,才能剖析專案
使用下列指令開始剖析資料庫:
敬上 在分析器從您的資源記錄作業開始時,分析器會顯示狀態訊息 資料庫並建立設定檔firebase database:profile
按下 Enter 鍵,完成個人資料並顯示結果。
解讀結果
分析器工具 並將結果分成三大類:speed、 「頻寬」和「未建立索引的查詢」。
速度
速度報表會測量伺服器針對 作業類型。不過,速度報告中顯示的速度 實際反映使用者體驗的速度影響因素包括: 網路狀況可能會增加用戶端的延遲時間
速度報表包含下列屬性:
- 路徑:資料庫中執行作業的路徑。如果
有超過 25 個子節點,分析器工具會將其收合為
並新增
$wildcard
標記。您可能會看見資料庫的 報表的根目錄,以正斜線/
表示。 - 計數:在指定路徑發生的作業數。
- 平均執行速度:伺服器執行所需的平均時間 處理該路徑中特定作業類型所需的商業邏輯。 此處測量的時間間隔是從 Pending Time」。
- 平均待處理時間:在此之前排入佇列的平均時間 和 Pod 的 IP 位址此延遲是用戶端發起的要求都很常見。 伺服器端要求的總延遲時間大致等於該要求 待處理時間和執行速度 ,瞭解如何調查及移除這項存取權。
- 權限遭拒:指定的作業數量 已遭封鎖 Firebase 資料庫規則 資料庫內的項目
按照作業類型顯示速度報表 | |
---|---|
讀取執行速度 | 用戶端要求從 資料庫讀取執行時間通常會隨著資料量而增減 但部分小型讀取作業也可能會因為快取而延遲 預先擷取。 |
寫入執行速度 | 用戶端要求將資料寫入 資料庫寫入執行時間會隨著資料量增加而擴充 寫入。 |
連線執行速度 | 對資料庫用戶端建立要求的伺服器回應時間。 連線要求的延遲時間是以記憶體內伺服器端做為主要用途 與連線管理相關的簿記 |
廣播執行速度 | 伺服器將資料提供給用戶端所需的時間 監聽指定路徑以取得即時更新。 Count 屬性 廣播速度報表會彙整已播送的廣播數量 (而非 接收資訊的客戶數量舉例來說,假設有 10 個用戶端 的監聽器中,當伺服器對所有 10 字元播送更新時 用戶端,即使 10 個用戶端,廣播計數只反映 1 則廣播訊息 接收資料 「權限遭拒」屬性不包含在 播送速度報告。 |
頻寬
「頻寬報表」深入分析資料庫消耗多少資料 跨傳入和傳出作業請不要使用頻寬 提供預估帳單的報表,因為未涵蓋所用頻寬 執行其他作業,例如剖析資料庫。 「頻寬報表」會大致估算 讀取、寫入和播送作業消耗的資料量。 這項工具是用來評估成效,但不能預測帳單。
頻寬報表包含下列屬性:
路徑:資料庫中執行作業的路徑。如果 有超過 25 個子節點,分析器工具會將這些子節點收合 父項路徑
總計:所有作業使用傳出或傳入的位元組總數 和預測路徑
計數:在指定路徑發生的作業數。
平均:所有使用者下載或上傳的平均位元組數 都位於指定路徑 (位元組/寫入或位元組/讀取) 時。
頻寬報表 | |
---|---|
下載的位元組數 | 透過用戶端傳送的讀取和廣播作業耗用的資料量 SDK 和 REST API |
上傳的位元組數 | 透過傳送至資料庫伺服器的寫入要求使用的資料。 刪除作業會顯示為寫入內容,且傳入量為 0 個位元組。 |
未建立索引的查詢
未建立索引的查詢費用可能非常高昂,因為用戶端下載 然後在該位置執行查詢。這會佔用更多頻寬 無從得知盡可能解決最多的未建立索引查詢,以便最佳化 例如資料庫效能
「未建立索引的查詢」報表會顯示下列屬性:
- 路徑:在資料庫中發生未建立索引的查詢時所在的路徑。
- 索引:應新增的規則來解決未建立索引的查詢。學習新知 請參閱為資料建立索引一文,進一步瞭解如何建立索引。
- 計數:在指定路徑中發生的未建立索引查詢數量。
進階剖析
如要查看資料庫處理的所有作業,請使用 --raw
旗標,如下所示:
firebase database:profile --raw
原始輸出也會包含每項作業的用戶端資訊,例如
userAgent
字串和 IP 位址。進一步瞭解各種作業
是在 Firebase Realtime Database 作業類型中的 Firebase Realtime Database 剖析。
分析器工具:非帳單工具
請勿使用分析器工具估算頻寬費用。分析器工具 方便您全盤掌握資料庫的效能 監控作業及排解問題,而非預估費用。這項服務 而不是網路流量,只會記錄 回應中傳送的應用程式資料
以下是一些由 Firebase 計費的常見網路流量範例 針對下列項目:
- 通訊協定負荷:伺服器和用戶端之間的一些額外流量 建立及維護工作階段時,視基礎系統的 這類流量可能包括 Firebase 即時資料庫的即時資料 通訊協定負擔、WebSocket 負擔和 HTTP 標頭負擔。每當 這樣連線,並結合了任何 SSL 加密機制,所產生的負擔 系統也會增加連線費用雖然這通常 需要大量頻寬,如果您的裝載是極小的,則可能很龐大 或是頻繁、短時間內連結
- SSL 加密負擔:使用 SSL 須支付相關費用 安全連線所需的加密負擔平均來說 初始握手約為 3.5 KB,而 每封外寄郵件的 TLS 記錄標頭。對大多數應用程式來說 佔了帳單的百分比然而,如果 確實需要大量的 SSL 交握。例如裝置 不支援 TLS 工作階段票證的 KPI 可能需要大量的 SSL 連線握手
如要進一步瞭解如何解讀及預估帳單金額,請參閱本文。