Firebase Performance Monitoring — bu Google tomonidan mobil ilovalar unumdorligini real vaqtda kuzatish uchun bepul vositadir. Xizmat avtomatik ravishda ishga tushirish vaqti, ekranlarni ko'rsatish tezligi va HTTP so'rovlarining davomiyligi metrikalarini to'playdi, asosiy stsenariylar uchun kod yozishni talab qilmaydi. Google Firebase, 2025 ma'lumotlariga ko'ra, SDK qo'shimcha sozlamalarsiz 90% gacha tarmoq so'rovlarini avtomatik kuzatadi. Vosite Android, iOS va veb-ilovalar uchun Firebase ekotizimi doirasida mavjud.
Asosiy fikrlar
Firebase Performance Monitoring — bu mobil ilovalarning unumdorlik metrikalarini to'playdigan va ko'rsatadigan Google bulut xizmatidir. Xizmat Firebase asboblar to'plamiga kiradi va alohida to'lov talab qilmaydi — monitoring bepul Spark tarifi (kuniga 500 000 ta hodisa chegarasi) va pulli Blaze doirasida mavjud. Firebase Performance standart stsenariylar uchun avtomatik treyslar yaratadi: ekranning cold start, warm start, fon HTTP so'rovlari.
Xizmat arxitekturasi ikki turdagi ma'lumotlarga asoslangan: traces (treyslar) va metrics (metrikalar). Treys — boshlanishi va oxiri bo'lgan, ichida bajarilish vaqti o'lchanadigan vaqt oralig'i. Metrika — sonli qiymat: javob hajmi, xato chastotasi, bayt/s tezligi. Har bir treys bir nechta metrikalarni o'z ichiga olishi mumkin. SDK ma'lumotlarni qurilmada to'playdi, buferlaydi va foydalanuvchi tajribasiga ta'sir qilmaslik uchun past kechikish ustuvorligi bilan fonda Firebase-ga yuboradi.
Google I/O 2024 hisobotiga ko'ra, Firebase Performance butun dunyo bo'ylab 2 milliondan ortiq ilovalarda qo'llaniladi. Firebase Performance yordamida unumdorlik muammosini aniqlashning o'rtacha vaqti, ogohlantirishlar sozlangan bo'lsa, nashrdan keyin 15 daqiqani tashkil qiladi. Monitoring bo'lmasa, shunga o'xshash muammo o'rtacha 2-3 kundan keyin foydalanuvchilarning qo'llab-quvvatlash xizmatiga shikoyatlari asosida aniqlanadi.
Crashlytics ilovaning ishdan chiqishi va halokatli xatolarni — ilova to'satdan to'xtagan holatlarni kuzatadi. Firebase Performance ishlayotgan ilovaning unumdorligini kuzatadi: sekin ekranlar, uzoq tarmoq so'rovlari, UI javob kechikishlari. Crashlytics “ilova nima uchun ishdan chiqdi?” degan savolga javob beradi, Performance esa “ilova nima uchun sekin ishlaydi?” degan savolga. Ikkala xizmat bitta SDK (Firebase Core) orqali integratsiya qilinadi va ma'lumotlar Firebase konsolining tegishli bo'limlarida ko'rsatiladi.
Firebase Performance o'rtacha qiymatlarni emas, faqat persentillarni ko'rsatadi: P50, P75, P90, P95, P99. Bu unumdorlik uchun juda muhim: o'rtacha vaqt chetga chiqadigan qiymatlarni yashiradi. Agar 99 foydalanuvchi ekranni 200 ms da ochsa va bittasi 20 soniyada ochsa, o'rtacha ~400 ms bo'ladi, bu maqbul ko'rinadi. P99 esa 20 soniyani ko'rsatadi — haqiqiy muammoni. Firebase persentillarni vaqt shkalasida ko'rsatadi, bu regressiyalarni bir soatgacha aniqlik bilan kuzatish imkonini beradi.
Firebase Performance SDK ilovaga standart integratsiya orqali kiritiladi: Gradle (Android) ga bog'liqlik qo'shish yoki CocoaPods (iOS) orqali. Koddagi Firebase ishga tushirilgandan so'ng, SDK qo'shimcha sozlamalarsiz avtomatik metrika to'plashni boshlaydi. Muhim ishlash printsipi — lazy collection: SDK ma'lumotlarni darhol yubormaydi, balki to'playdi va tarmoq sharoiti qulay bo'lganda partiyalar bilan uzatadi.
iOS uchun SDK HTTP so'rovlarini tutib olish uchun NSURLProtocol dan, Android uchun OkHttp Interceptor dan foydalanadi. Agar ilova OkHttp dan foydalanmasa, SDK avtomatik HttpURLConnection ni o'raydi. Tutib olingan so'rovlar metadata bilan boyitiladi: Content-Type, javob holati, bayt hajmi, davomiylik. Barcha ma'lumotlar TLS 1.3 shifrlash bilan HTTPS orqali Firebase serveriga uzatiladi.
Firebase Performance ning asosiy talablaridan biri — Gradle pluginlar ro'yxatida oxirgi plugin bo'lishdir. Agar tartib buzilgan bo'lsa, SDK barcha so'rovlarni tutib olmasligi yoki ishga tushirish vaqtini noto'g'ri o'lchashi mumkin. Firebase pluginni Crashlytics va boshqa Google Services pluginlaridan keyin, plugins blokining oxiriga joylashtirishni tavsiya qiladi.
// build.gradle (Module: app) — pluginlarning to'g'ri tartibi
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" // oxirgi!
}
dependencies {
implementation platform("com.google.firebase:firebase-bom:33.0.0")
implementation "com.google.firebase:firebase-perf"
}
Firebase Performance uch turdagi avtomatik treyslarni yaratadi: screen trace (ekranni ko'rsatish vaqti), app start trace (ilovani ishga tushirish vaqti) va network request trace (HTTP so'rovlari). Android uchun screen trace Activity.onCreate chaqiruvi va birinchi kadr ko'rsatilishi tugashi orasidagi vaqtni o'lchaydi. iOS uchun viewDidLoad va viewDidAppear orasidagi vaqt o'lchanadi. Firebase har bir ekran uchun Activity yoki ViewController sinf nomidan foydalanib avtomatik treys yaratadi.
App start trace ikki turga bo'linadi: cold start (ilova noldan ishga tushadi, jarayon mavjud emas edi) va warm start (ilova fon holatidan tiklanadi). Cold start eng muhim ko'rsatkichdir, chunki u barcha SDK larni ishga tushirish, DEX fayllarni yuklash va birinchi Activity ni yaratishni o'z ichiga oladi. Firebase cold start ni jarayon boshlanishidan birinchi ekran to'liq ko'rsatilguncha o'lchaydi. Google tavsiyalariga ko'ra, cold start P50 uchun 500 ms dan va P99 uchun 2 soniyadan oshmasligi kerak.
Network request trace har bir HTTP so'rovini metadata bilan avtomatik qayd etadi: URL, metod, javob kodi, javob hajmi, uzatish tezligi. Firebase Performance konsolida so'rovlarni URL namunasi bo'yicha filtrlash mumkin — masalan, /api/v2/orders manziliga barcha so'rovlarni ko'rsatish. Har bir namuna uchun javob vaqtining persentillari va 4xx/5xx xato chastotasi ko'rsatiladi. Bu alohida ogohlantirishlarni sozlamasdan ma'lum bir API degradatsiyasini tez aniqlash imkonini beradi.
Ekranlar uchun Firebase Performance qo'shimcha ravishda “frozen frames” metric ini hisoblaydi — 700 ms dan uzoq ko'rsatilgan kadrlar. Bunday UI muzlashlari foydalanuvchi tomonidan “ilova qotib qoldi” deb qabul qilinadi. Agar ekranda 1% dan ortiq frozen frames bo'lsa, Firebase metrikani muammoli deb belgilaydi. Android SDK uchun qo'shimcha slow renders metrikasi to'planadi — 16 ms dan uzoq kadrlar (60 FPS ni o'tkazib yuborish). Screen trace va frozen frames ning kombinatsiyasi yuklash vaqti va animatsiyalarning silliqligi haqida to'liq tasavvur beradi.
Maxsus treyslar har qanday foydalanuvchi stsenariysining davomiyligini o'lchash imkonini beradi: buyurtma berish, rasmni bulutga yuklash, ma'lumotlarni sinxronlash. Dasturchi koddagi treysning boshlanishi va oxirini aniq ko'rsatadi va stsenariyga nom beradi. Avtomatik treyslardan farqli o'laroq, maxsus treyslar nima o'lchanayotgani ustidan to'liq nazoratni ta'minlaydi va filtrlash uchun atributlar qo'shish imkonini beradi.
Har bir maxsus treys metadata sifatida qo'shiladigan atributlar — kalit-qiymat juftliklarini o'z ichiga olishi mumkin. Atributlar ma'lumotlarni segmentlashga yordam beradi: masalan, buyurtma berish vaqtini “promo_user” va “regular_user” uchun alohida kuzatish mumkin. Firebase Performance har bir treys uchun 5 tagacha atribut va atributning 100 tagacha noyob qiymatini qo'llab-quvvatlaydi. Atributlar indekslanadi va Firebase konsolida filtrlash uchun mavjud.
Google I/O 2024 hisobotiga ko'ra, Spotify jamoasi treklar orasidagi o'tish vaqtini kuzatish uchun Firebase maxsus treyslaridan foydalanadi. Bu audio bufer keshlashdagi tor joyni aniqlash orqali median o'tish vaqtini 400 ms dan 120 ms gacha kamaytirish imkonini berdi. Asosiy kashfiyot “device_model” atributi bo'yicha filtrlash edi — muammo faqat Android 13 bilan Samsung qurilmalarida namoyon bo'lardi.
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()
// Buyurtma berish stsenariysini bajarish
validateCart()
processPayment()
confirmOrder()
trace.stop()
}
}
Firebase Performance-ni Android-ga integratsiya qilish uch qadamni talab qiladi: google-services pluginini qo'shish, Firebase BOM (Bill of Materials) ulash va firebase-perf bog'liqligini qo'shish. Firebase Performance AppCompatActivity dan foydalanadigan barcha Activity va fragmentlarda avtomatik ishlaydi. Compose ekranlari uchun Firebase maxsus treyslardan foydalanishni tavsiya qiladi, chunki avtomatik screen trace Compose-ni to'g'ridan-to'g'ri qo'llab-quvvatlamaydi.
Muhim nuance: Firebase Performance Gradle plugini kompilyatsiya bosqichida ilovaning bayt kodini o'zgartiradi. Plugin har bir Activity va OkHttp mijoziga instrumentatsiya kodini qo'shadi. Bu qurish vaqtini 5-10% va APK hajmini 200-400 KB ga oshirishi mumkin. Debug qurilmalarida Firebase Performance avtomatik o'chiriladi — bu mahalliy ishlab chiqishda metrikalarning buzilishidan himoya qiladi. Debug-da majburiy yoqish uchun manifestda firebasePerformanceInstrumentationEnabled flagi ishlatiladi.
Firebase Performance shuningdek iOS uchun MetricKit va Android uchun Perfetto — past darajadagi tizim treyserlarini qo'llab-quvvatlaydi. MetricKit operatsion tizim darajasida kadr chastotasi, CPU va xotira iste'moli haqida ma'lumot beradi. Firebase bu ma'lumotlarni to'playdi va HTTP treyslar va screen traces bilan bir xil konsolda ko'rsatadi, tizim va ilova telemetriyasini bitta interfeysda birlashtiradi.
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 */ }
})
iOS uchun Firebase Performance integratsiyasi CocoaPods yoki Swift Package Manager orqali amalga oshiriladi. FirebasePerformance va FirebaseCore podlari o'rnatilgandan so'ng, SDK avtomatik metrika to'plashni boshlaydi. HTTP so'rovlarini tutib olish uchun Firebase Performance iOS NSURLProtocol — ilovadagi barcha URL yuklamalarini tutib olish imkonini beradigan tizim mexanizmidan foydalanadi. SDK ishga tushirilganda o'zining NSURLProtocol pastki sinfini ro'yxatdan o'tkazadi va URLSession orqali barcha so'rovlar avtomatik monitoringga tushadi.
iOS uchun cheklov: Firebase Performance SwiftUI uchun avtomatik screen trace-ni qo'llab-quvvatlamaydi. SwiftUI ilovalari uchun View tanasini start/stop blokiga o'rab, qo'lda maxsus treyslar yaratish kerak. Firebase SwiftUI uchun mahalliy qo'llab-quvvatlash ustida ishlamoqda, ammo hozirda SDK faqat UIView boshqaruvchilarini avtomatik kuzatadi. UIKit + SwiftUI gibrid ilovalari uchun ekranlarni UIKit-da yaratish va SwiftUI-ni UIHostingController orqali joylashtirish tavsiya etiladi.
Firebase Performance iOS shuningdek MetricKit — OT darajasida diagnostik ma'lumotlarni to'playdigan Apple freymvorki bilan integratsiyani taqdim etadi. MetricKit CPU, GPU, xotira va kadr chastotasi metrikalari bilan kunlik hisobotlarni yuboradi. Firebase Performance bu hisobotlarni to'playdi va maxsus treyslar yonida konsolda ko'rsatadi, bu ilova va tizim darajasida unumdorlikning to'liq tasavvurini beradi.
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()
}
}
Ko'p beriladigan savollar
Ha, Firebase Performance bepul Spark tarifida kuniga 500 000 ta hodisa chegarasi bilan mavjud. Katta hajmdagi ma'lumotlarga ega loyihalar uchun Blaze tarifi ishlatiladi — limitdan yuqori har 1000 ta hodisa uchun 0,0003 dollar. Aksariyat startaplar va o'rta loyihalar uchun kuniga 500 000 ta hodisa yetarli.
Firebase Performance SDK minimal ta'sir uchun optimallashtirilgan. Ma'lumotlarni yuborish past ustuvorlikdagi fon oqimida amalga oshiriladi. Google testlariga ko'ra, SDK ning ishga tushirish vaqtiga ta'siri 1% dan kam. SDK hajmi Android uchun taxminan 300 KB va iOS uchun 250 KB.
Avtomatik ravishda app start (cold/warm), screen rendering (har bir ekranning ko'rsatish vaqti), HTTP so'rovlari (vaqt, hajm, holat) va frozen frames to'planadi. Android uchun qo'shimcha slow renders (>16 ms) chastotasi va ANR to'planadi.
Firebase Performance debug rejimida avtomatik o'chiriladi. Majburiy nazorat uchun Android manifestida firebasePerformanceInstrumentationEnabled flagi ishlatiladi. iOS uchun o'chirish -FIRPerformanceEnabled NO flagi orqali ishga tushirish sxemasi argumentlarida amalga oshiriladi.
Ha, Firebase Performance BigQuery ga eksportni qo'llab-quvvatlaydi. Loyiha BigQuery ga ulangandan so'ng, barcha metrikalar avtomatik BigQuery jadvallariga ko'chiriladi, SQL so'rovlari va Looker Studio da dashboardlar yaratish uchun mavjud bo'ladi. Eksport Firebase konsolining Integrations bo'limida sozlanadi.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.