Firebase Performance — nó là gì, công cụ giám sát và số liệu

Tác giả: IT Sectr Đã đăng: 2026-05-30 Thời gian đọc: 10 phút

Firebase Performance Monitoring là một công cụ miễn phí của Google để theo dõi hiệu suất ứng dụng di động theo thời gian thực. Dịch vụ tự động thu thập các số liệu về thời gian khởi động, tốc độ hiển thị màn hình và thời lượng yêu cầu HTTP mà không cần viết mã cho các kịch bản cơ bản. Theo Google Firebase, 2025, SDK tự động theo dõi tới 90% yêu cầu mạng mà không cần cấu hình thêm. Công cụ này khả dụng cho Android, iOS và ứng dụng web trong hệ sinh thái Firebase.

Những điểm chính

  • Firebase Performance — giám sát hiệu suất thời gian thực miễn phí cho ứng dụng di động.
  • Theo dõi tự động thu thập số liệu khởi động, màn hình và yêu cầu mạng mà không cần viết mã.
  • Trace tùy chỉnh cho phép theo dõi bất kỳ kịch bản kinh doanh nào — từ hoàn tất đơn hàng đến tải hình ảnh.
  • Số liệu HTTP bao gồm thời gian phản hồi, kích thước tải trọng và mã trạng thái cho mỗi yêu cầu.
  • Bảng điều khiển Firebase cung cấp bản tóm tắt theo thiết bị, phiên bản HĐH và khu vực với bộ lọc phân vị.

Firebase Performance Monitoring là gì?

Firebase Performance Monitoring là dịch vụ đám mây của Google thu thập và hiển thị số liệu hiệu suất của ứng dụng di động. Dịch vụ này là một phần của bộ công cụ Firebase và không yêu cầu thanh toán riêng — giám sát có sẵn trong gói Spark miễn phí (giới hạn 500.000 sự kiện mỗi ngày) và gói Blaze trả phí. Firebase Performance tự động tạo trace cho các kịch bản tiêu chuẩn: khởi động màn hình nguội, khởi động ấm, yêu cầu HTTP nền.

Kiến trúc của dịch vụ được xây dựng trên hai loại dữ liệu: traces (trace) và metrics (số liệu). Trace là một khoảng thời gian có điểm bắt đầu và kết thúc, trong đó thời gian thực thi được đo lường. Số liệu là một giá trị số: kích thước phản hồi, tỷ lệ lỗi, tốc độ tính bằng byte/giây. Mỗi trace có thể chứa nhiều số liệu. SDK thu thập dữ liệu trên thiết bị, lưu vào bộ đệm và gửi đến Firebase trong nền với ưu tiên độ trễ thấp để không ảnh hưởng đến trải nghiệm người dùng.

Theo báo cáo Google I/O 2024, Firebase Performance được sử dụng trong hơn 2 triệu ứng dụng trên toàn thế giới. Thời gian trung bình để phát hiện sự cố hiệu suất bằng Firebase Performance là 15 phút sau khi phát hành nếu đã cấu hình cảnh báo. Nếu không giám sát, một vấn đề tương tự thường được phát hiện trong vòng 2-3 ngày thông qua khiếu nại của người dùng đến bộ phận hỗ trợ.

Sự khác biệt so với Firebase Crashlytics

Crashlytics theo dõi sự cố và lỗi nghiêm trọng — các tình huống ứng dụng kết thúc đột ngột. Firebase Performance giám sát hiệu suất của ứng dụng đang chạy: màn hình chậm, yêu cầu mạng dài, độ trễ phản hồi UI. Crashlytics trả lời câu hỏi "tại sao ứng dụng bị crash?", còn Performance trả lời "tại sao ứng dụng chạy chậm?". Cả hai dịch vụ tích hợp qua một SDK (Firebase Core) và dữ liệu được hiển thị trong các phần liền kề của bảng điều khiển Firebase.

Số liệu phân vị

Firebase Performance không hiển thị giá trị trung bình — chỉ hiển thị phân vị: P50, P75, P90, P95, P99. Điều này rất quan trọng đối với hiệu suất: thời gian trung bình che giấu các giá trị ngoại lai. Nếu 99 người dùng mở màn hình trong 200 ms và một người mở trong 20 giây, giá trị trung bình sẽ là ~400 ms, trông có vẻ chấp nhận được. P99 sẽ hiển thị 20 giây — vấn đề thực sự. Firebase hiển thị các phân vị trên dòng thời gian, cho phép theo dõi suy thoái với độ chính xác theo giờ.

Cách Firebase Performance Monitoring hoạt động

Firebase Performance SDK được tích hợp vào ứng dụng thông qua tích hợp tiêu chuẩn: thêm phụ thuộc trong Gradle (Android) hoặc qua CocoaPods (iOS). Sau khi khởi tạo Firebase trong mã, SDK tự động bắt đầu thu thập số liệu mà không cần cấu hình thêm. Một nguyên tắc quan trọng là thu thập chậm: SDK không gửi dữ liệu ngay lập tức mà tích lũy và truyền theo lô khi điều kiện mạng thuận lợi.

Đối với iOS, SDK sử dụng NSURLProtocol để chặn các yêu cầu HTTP; đối với Android — OkHttp Interceptor. Nếu ứng dụng không sử dụng OkHttp, SDK tự động bao bọc HttpURLConnection. Các yêu cầu bị chặn được làm giàu với siêu dữ liệu: Content-Type, trạng thái phản hồi, kích thước tính bằng byte, thời lượng. Tất cả dữ liệu được truyền qua HTTPS đến máy chủ Firebase với mã hóa TLS 1.3.

Một trong những yêu cầu chính của Firebase Performance là phải là plugin cuối cùng trong danh sách plugin Gradle. Nếu thứ tự bị vi phạm, SDK có thể không chặn được tất cả các yêu cầu hoặc đo thời gian khởi động không chính xác. Firebase khuyến nghị đặt plugin ở cuối khối plugin, sau Crashlytics và các plugin Google Services khác.

groovy
// build.gradle (Module: app) — thứ tự plugin chính xác
plugins {
    id "com.android.application"
    id "org.jetbrains.kotlin.android"
    id "com.google.gms.google-services"
    id "com.google.firebase.crashlytics"
    id "com.google.firebase.firebase-perf"  // cuối cùng!
}

dependencies {
    implementation platform("com.google.firebase:firebase-bom:33.0.0")
    implementation "com.google.firebase:firebase-perf"
}

Trace tự động: màn hình, khởi động, mạng

Firebase Performance tạo ba loại trace tự động: screen trace (thời gian hiển thị màn hình), app start trace (thời gian khởi động ứng dụng) và network request trace (yêu cầu HTTP). Screen trace cho Android đo thời gian giữa lệnh gọi Activity.onCreate và hoàn tất hiển thị khung hình đầu tiên. Đối với iOS, thời gian giữa viewDidLoad và viewDidAppear được đo. Firebase tự động tạo một trace cho mỗi màn hình, sử dụng tên lớp của Activity hoặc ViewController.

App start trace được chia thành hai loại: khởi động nguội (ứng dụng khởi động từ đầu, tiến trình chưa tồn tại) và khởi động ấm (ứng dụng được khôi phục từ trạng thái nền). Khởi động nguội là số liệu quan trọng nhất vì nó bao gồm khởi tạo tất cả SDK, tải tệp DEX và tạo Activity đầu tiên. Firebase đo khởi động nguội từ thời điểm tiến trình bắt đầu đến khi hiển thị đầy đủ màn hình đầu tiên. Theo khuyến nghị của Google, khởi động nguội không được vượt quá 500 ms cho P50 và 2 giây cho P99.

Network request trace tự động ghi lại mọi yêu cầu HTTP với siêu dữ liệu: URL, phương thức, mã phản hồi, kích thước phản hồi, tốc độ truyền. Trong bảng điều khiển Firebase Performance, bạn có thể lọc yêu cầu theo mẫu URL — ví dụ: hiển thị tất cả yêu cầu đến /api/v2/orders. Đối với mỗi mẫu, phân vị thời gian phản hồi và tỷ lệ lỗi 4xx/5xx được hiển thị. Điều này cho phép phát hiện nhanh sự suy thoái của một API cụ thể mà không cần thiết lập cảnh báo riêng lẻ.

Số liệu màn hình chi tiết

Đối với màn hình, Firebase Performance tính toán thêm số liệu "frozen frames" — các khung hình mất hơn 700 ms để hiển thị. Những hiện tượng đóng băng UI này được người dùng cảm nhận là "ứng dụng bị đơ". Nếu màn hình có hơn 1% frozen frames, Firebase đánh dấu số liệu đó là có vấn đề. Đối với Android, SDK thu thập thêm số liệu slow renders — khung hình dài hơn 16 ms (bỏ lỡ 60 FPS). Sự kết hợp giữa screen trace và frozen frames cung cấp bức tranh toàn diện về cả thời gian tải và độ mượt của hoạt ảnh.

Trace tùy chỉnh cho kịch bản kinh doanh

Trace tùy chỉnh cho phép đo thời lượng của bất kỳ kịch bản người dùng nào: đặt hàng, tải ảnh lên đám mây, đồng bộ dữ liệu. Nhà phát triển chỉ định rõ ràng điểm bắt đầu và kết thúc của trace trong mã và đặt tên kịch bản. Không giống như trace tự động, trace tùy chỉnh cung cấp toàn quyền kiểm soát những gì được đo và cho phép thêm thuộc tính để lọc.

Mỗi trace tùy chỉnh có thể chứa thuộc tính — cặp khóa-giá trị được thêm dưới dạng siêu dữ liệu. Thuộc tính giúp phân khúc dữ liệu: ví dụ: bạn có thể theo dõi thời gian thanh toán riêng cho "promo_user" và "regular_user". Firebase Performance hỗ trợ tối đa 5 thuộc tính cho mỗi trace và tối đa 100 giá trị thuộc tính duy nhất. Các thuộc tính được lập chỉ mục và có sẵn để lọc trong bảng điều khiển Firebase.

Theo bài thuyết trình Google I/O 2024, nhóm Spotify sử dụng trace tùy chỉnh Firebase để giám sát thời gian chuyển đổi giữa các bản nhạc. Điều này đã giúp giảm thời gian chuyển đổi trung bình từ 400 ms xuống 120 ms bằng cách xác định điểm nghẽn trong bộ đệm âm thanh. Thông tin chính đến từ việc lọc theo thuộc tính "device_model" — vấn đề chỉ xuất hiện trên thiết bị Samsung chạy Android 13.

kotlin
import com.google.firebase.perf.FirebasePerformance
import com.google.firebase.perf.metrics.Trace

class CheckoutTracker {

    private val firebasePerf = FirebasePerformance.getInstance()

    fun trackCheckoutFlow(userId: String, promoApplied: Boolean) {
        val trace: Trace = firebasePerf.newTrace("checkout_flow")
        trace.putAttribute("promo_user", promoApplied.toString())
        trace.putAttribute("user_tier", "premium")
        trace.start()

        // Đang thực thi kịch bản thanh toán
        validateCart()
        processPayment()
        confirmOrder()

        trace.stop()
    }
}

Tích hợp Firebase Performance vào dự án Android

Tích hợp Firebase Performance vào Android yêu cầu ba bước: thêm plugin google-services, kết nối BOM (Bill of Materials) Firebase và thêm phụ thuộc firebase-perf. Firebase Performance tự động hoạt động trên tất cả Activity và fragment nếu chúng sử dụng AppCompatActivity. Đối với màn hình Compose, Firebase khuyến nghị sử dụng trace tùy chỉnh vì screen trace tự động không hỗ trợ Compose trực tiếp.

Một sắc thái quan trọng: Plugin Gradle Firebase Performance sửa đổi mã byte của ứng dụng tại thời điểm biên dịch. Plugin thêm mã đo lường vào mọi Activity và OkHttp client. Điều này có thể làm tăng thời gian xây dựng lên 5-10% và kích thước APK thêm 200-400 KB. Trong bản dựng gỡ lỗi, Firebase Performance tự động bị vô hiệu hóa — điều này ngăn chặn sự sai lệch số liệu trong quá trình phát triển cục bộ. Để buộc kích hoạt trong gỡ lỗi, sử dụng cờ firebasePerformanceInstrumentationEnabled trong tệp kê khai.

Firebase Performance cũng hỗ trợ MetricKit cho iOS và Perfetto cho Android — các trình theo dõi hệ thống cấp thấp. MetricKit cung cấp dữ liệu về tốc độ khung hình, mức sử dụng CPU và bộ nhớ ở cấp hệ điều hành. Firebase tổng hợp dữ liệu này và hiển thị trong cùng bảng điều khiển nơi hiển thị các trace HTTP và screen traces, kết hợp telemetry hệ thống và ứng dụng trong một giao diện.

Yêu cầu HTTP với OkHttp

kotlin
import okhttp3.OkHttpClient
import com.google.firebase.perf.network.FirebasePerfOkHttpClient

val client = OkHttpClient.Builder()
    .addInterceptor FirebasePerfOkHttpClient
    .build()

val request = Request.Builder()
    .url("https://api.example.com/orders")
    .build()

client.newCall(request).enqueue(object : Callback {
    override fun onFailure(call: Call, e: IOException) { /* handle */ }
    override fun onResponse(call: Call, response: Response) { /* handle */ }
})

Tích hợp Firebase Performance vào dự án iOS

Đối với iOS, tích hợp Firebase Performance được thực hiện qua CocoaPods hoặc Swift Package Manager. Sau khi cài đặt các pod FirebasePerformance và FirebaseCore, SDK tự động bắt đầu thu thập số liệu. Để chặn các yêu cầu HTTP, Firebase Performance iOS sử dụng NSURLProtocol — một cơ chế hệ thống cho phép chặn tất cả tải URL trong ứng dụng. SDK đăng ký lớp con NSURLProtocol của mình khi khởi động và tất cả yêu cầu qua URLSession tự động nằm trong diện giám sát.

Hạn chế đối với iOS: Firebase Performance không hỗ trợ screen trace tự động cho SwiftUI. Đối với ứng dụng SwiftUI, bạn phải tạo thủ công các trace tùy chỉnh bằng cách bao bọc nội dung View trong khối bắt đầu/dừng. Firebase đang phát triển hỗ trợ SwiftUI gốc, nhưng hiện tại SDK chỉ tự động theo dõi các bộ điều khiển UIView. Đối với ứng dụng kết hợp UIKit + SwiftUI, khuyến nghị tạo màn hình trên UIKit và nhúng SwiftUI qua UIHostingController.

Firebase Performance iOS cũng cung cấp tích hợp với MetricKit — một khung của Apple thu thập dữ liệu chẩn đoán ở cấp HĐH. MetricKit gửi báo cáo hàng ngày với số liệu CPU, GPU, bộ nhớ và tốc độ khung hình. Firebase Performance tổng hợp các báo cáo này và hiển thị trong bảng điều khiển cùng với các trace tùy chỉnh, cung cấp bức tranh toàn diện về hiệu suất ở cả cấp ứng dụng và hệ thống.

swift
import FirebasePerformance

final class ImageUploadService {

    func uploadImage(_ data: Data, to url: URL) async throws {
        guard let trace = Performance.startTrace(name: "image_upload") else { return }
        trace?.setValue("image/jpeg", forAttribute: "content_type")
        trace?.setValue("\(data.count)", forAttribute: "file_size")

        var request = URLRequest(url: url)
        request.httpMethod = "POST"
        request.httpBody = data

        let (_, response) = try await URLSession.shared.data(for: request)
        guard let httpResponse = response as? HTTPURLResponse else { return }
        trace?.setValue("\(httpResponse.statusCode)",
                        forAttribute: "status_code")
        trace?.stop()
    }
}

Câu hỏi thường gặp

Firebase Performance có miễn phí không?

Có, Firebase Performance có sẵn trong gói Spark miễn phí với giới hạn 500.000 sự kiện mỗi ngày. Đối với các dự án có khối lượng dữ liệu lớn, gói Blaze được sử dụng với giá trả theo mức sử dụng: 0,0003 đô la cho mỗi 1.000 sự kiện vượt quá giới hạn. Đối với hầu hết các công ty khởi nghiệp và dự án vừa, 500.000 sự kiện mỗi ngày là quá đủ.

SDK có ảnh hưởng đến hiệu suất ứng dụng không?

Firebase Performance SDK được tối ưu hóa để có tác động tối thiểu. Việc gửi dữ liệu được thực hiện trên luồng nền với ưu tiên thấp. Theo các thử nghiệm của Google, tác động của SDK lên thời gian khởi chạy dưới 1%. Kích thước SDK khoảng 300 KB cho Android và 250 KB cho iOS.

Những số liệu nào được thu thập tự động?

App start (nguội/ấm), screen rendering (thời gian hiển thị mỗi màn hình), yêu cầu HTTP (thời gian, kích thước, trạng thái) và frozen frames được thu thập tự động. Đối với Android, tần suất slow renders (>16 ms) và ANR cũng được thu thập.

Làm thế nào để vô hiệu hóa Firebase Performance cho bản dựng gỡ lỗi?

Firebase Performance tự động bị vô hiệu hóa trong chế độ gỡ lỗi. Để kiểm soát cưỡng bức, sử dụng cờ trong tệp kê khai Android: firebasePerformanceInstrumentationEnabled. Đối với iOS, việc vô hiệu hóa được thực hiện qua cờ -FIRPerformanceEnabled NO trong đối số lược đồ khởi chạy.

Có thể xuất dữ liệu Firebase Performance không?

Có, Firebase Performance hỗ trợ xuất sang BigQuery. Sau khi kết nối dự án với BigQuery, tất cả số liệu tự động được sao chép vào các bảng BigQuery, có sẵn cho truy vấn SQL và tạo bảng điều khiển trong Looker Studio. Việc xuất được cấu hình trong phần Tích hợp của bảng điều khiển Firebase.

Tổng kết

  • Firebase Performance — công cụ giám sát hiệu suất miễn phí với theo dõi tự động màn hình và yêu cầu HTTP.
  • Trace tự động bao phủ khởi động ứng dụng, hiển thị màn hình và yêu cầu mạng mà không cần một dòng mã nào.
  • Trace tùy chỉnh với thuộc tính cho phép theo dõi bất kỳ kịch bản kinh doanh nào với bộ lọc theo thiết bị, phiên bản hoặc trạng thái người dùng.
  • Phân vị P50-P99 cung cấp bức tranh hiệu suất thực tế không giống như giá trị trung bình.
  • Tích hợp với Firebase Crashlytics và BigQuery tạo ra hệ sinh thái giám sát chất lượng ứng dụng thống nhất.
  • Tác động tối thiểu đến hiệu suất — dưới 1% lên thời gian khởi chạy, tối đa 400 KB lên kích thước ứng dụng.
  • Khuyến nghị: sử dụng Firebase Performance ở tất cả các giai đoạn phát triển, bao gồm cả sản xuất, để phát hiện sớm suy thoái.

Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay

IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.

Thảo luận dự án

Đọc thêm