Firebase Performance Monitoring, Google का एक मुफ्त टूल है जो रियल टाइम में मोबाइल ऐप के प्रदर्शन को ट्रैक करता है। सेवा बुनियादी परिदृश्यों के लिए कोड लिखे बिना स्टार्टअप समय, स्क्रीन रेंडरिंग गति और HTTP अनुरोध अवधि के मेट्रिक्स स्वचालित रूप से एकत्र करती है। Google Firebase, 2025 के अनुसार, SDK बिना अतिरिक्त कॉन्फ़िगरेशन के 90% तक नेटवर्क अनुरोधों को स्वचालित रूप से ट्रेस करता है। यह टूल Firebase इकोसिस्टम के अंतर्गत Android, iOS और वेब ऐप्लिकेशन के लिए उपलब्ध है।
मुख्य बिंदु
Firebase Performance Monitoring Google की एक क्लाउड सेवा है जो मोबाइल ऐप्लिकेशन के प्रदर्शन मेट्रिक्स एकत्र और प्रदर्शित करती है। सेवा Firebase टूलसेट का हिस्सा है और इसके लिए अलग से भुगतान की आवश्यकता नहीं है — निगरानी मुफ्त Spark टियर (प्रति दिन 500,000 इवेंट की सीमा) और सशुल्क Blaze टियर में उपलब्ध है। Firebase Performance मानक परिदृश्यों के लिए स्वचालित रूप से ट्रेस उत्पन्न करता है: कोल्ड स्क्रीन स्टार्ट, वार्म स्टार्ट, बैकग्राउंड HTTP अनुरोध।
सेवा की आर्किटेक्चर दो प्रकार के डेटा पर बनी है: traces (ट्रेस) और metrics (मेट्रिक्स)। ट्रेस एक शुरुआत और अंत के साथ एक समय अंतराल है, जिसके भीतर निष्पादन की अवधि मापी जाती है। मेट्रिक एक संख्यात्मक मान है: प्रतिक्रिया आकार, त्रुटि दर, बाइट्स/सेकंड में गति। प्रत्येक ट्रेस में कई मेट्रिक्स हो सकते हैं। SDK डिवाइस पर डेटा एकत्र करता है, इसे बफ़र करता है और उपयोगकर्ता अनुभव को प्रभावित न करने के लिए कम विलंबता प्राथमिकता के साथ पृष्ठभूमि में Firebase को भेजता है।
Google I/O 2024 रिपोर्ट के अनुसार, Firebase Performance दुनिया भर में 2 मिलियन से अधिक ऐप्लिकेशन में उपयोग किया जाता है। यदि अलर्ट कॉन्फ़िगर किए गए हैं, तो Firebase Performance का उपयोग करके प्रदर्शन समस्या का पता लगाने का औसत समय रिलीज़ के बाद 15 मिनट है। निगरानी के बिना, समान समस्या का पता आमतौर पर उपयोगकर्ताओं की सहायता से शिकायतों के माध्यम से 2-3 दिनों में लगाया जाता है।
Crashlytics क्रैश और घातक त्रुटियों को ट्रैक करता है — ऐसी स्थितियाँ जहाँ ऐप अनपेक्षित रूप से समाप्त हो जाता है। Firebase Performance चल रहे ऐप्लिकेशन में प्रदर्शन की निगरानी करता है: धीमी स्क्रीन, लंबे नेटवर्क अनुरोध, UI प्रतिक्रिया विलंब। Crashlytics इस सवाल का जवाब देता है कि "ऐप क्रैश क्यों हुआ?", जबकि Performance जवाब देता है "ऐप धीमा क्यों चल रहा है?"। दोनों सेवाएँ एक SDK (Firebase Core) के माध्यम से एकीकृत होती हैं और डेटा Firebase कंसोल के आसन्न अनुभागों में प्रदर्शित होता है।
Firebase Performance औसत मान नहीं दिखाता — केवल प्रतिशतक: P50, P75, P90, P95, P99। यह प्रदर्शन के लिए महत्वपूर्ण है: औसत समय आउटलायर को छिपा देता है। यदि 99 उपयोगकर्ता स्क्रीन को 200 ms में खोलते हैं और एक इसे 20 सेकंड में खोलता है, तो औसत ~400 ms होगा, जो स्वीकार्य लगता है। P99 20 सेकंड दिखाएगा — वास्तविक समस्या। Firebase प्रतिशतक को समयरेखा पर प्रदर्शित करता है, जो प्रति घंटा सटीकता के साथ रिग्रेशन ट्रैकिंग की अनुमति देता है।
Firebase Performance SDK को मानक एकीकरण के माध्यम से ऐप्लिकेशन में शामिल किया जाता है: Gradle (Android) में निर्भरता जोड़ना या CocoaPods (iOS) के माध्यम से। कोड में Firebase आरंभीकरण के बाद, SDK बिना अतिरिक्त कॉन्फ़िगरेशन के स्वचालित रूप से मेट्रिक्स एकत्र करना शुरू कर देता है। एक महत्वपूर्ण सिद्धांत lazy collection है: SDK डेटा तुरंत नहीं भेजता, बल्कि इसे जमा करता है और अनुकूल नेटवर्क स्थितियों के तहत बैचों में प्रसारित करता है।
iOS के लिए, SDK HTTP अनुरोधों को इंटरसेप्ट करने के लिए NSURLProtocol का उपयोग करता है; Android के लिए — OkHttp Interceptor। यदि ऐप OkHttp का उपयोग नहीं करता है, तो SDK स्वचालित रूप से HttpURLConnection को रैप करता है। इंटरसेप्ट किए गए अनुरोध मेटाडेटा से समृद्ध होते हैं: Content-Type, प्रतिक्रिया स्थिति, बाइट्स में आकार, अवधि। सभी डेटा TLS 1.3 एन्क्रिप्शन के साथ HTTPS के माध्यम से Firebase सर्वर पर प्रेषित किया जाता है।
Firebase Performance की प्रमुख आवश्यकताओं में से एक है Gradle प्लगइन सूची में अंतिम होना। यदि क्रम का उल्लंघन किया जाता है, तो SDK सभी अनुरोधों को इंटरसेप्ट नहीं कर सकता या स्टार्टअप समय को गलत तरीके से माप सकता है। Firebase अनुशंसा करता है कि प्लगइन को प्लगइन ब्लॉक के अंत में, Crashlytics और अन्य Google Services प्लगइन के बाद रखा जाए।
// build.gradle (Module: app) — प्लगइन का सही क्रम
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" // अंतिम!
}
dependencies {
implementation platform("com.google.firebase:firebase-bom:33.0.0")
implementation "com.google.firebase:firebase-perf"
}
Firebase Performance तीन प्रकार के स्वचालित ट्रेस बनाता है: screen trace (स्क्रीन रेंडरिंग समय), app start trace (ऐप स्टार्टअप समय) और network request trace (HTTP अनुरोध)। Android के लिए screen trace Activity.onCreate कॉल और पहले फ्रेम के रेंडरिंग पूरा होने के बीच का समय मापता है। iOS के लिए, viewDidLoad और viewDidAppear के बीच का समय मापा जाता है। Firebase प्रत्येक स्क्रीन के लिए स्वचालित रूप से एक ट्रेस बनाता है, जिसमें Activity या ViewController का क्लास नाम उपयोग किया जाता है।
App start trace दो प्रकारों में विभाजित है: कोल्ड स्टार्ट (ऐप स्क्रैच से शुरू होता है, प्रक्रिया मौजूद नहीं थी) और वार्म स्टार्ट (ऐप बैकग्राउंड स्थिति से पुनर्स्थापित होता है)। कोल्ड स्टार्ट सबसे महत्वपूर्ण मेट्रिक है क्योंकि इसमें सभी SDK का आरंभीकरण, DEX फ़ाइलें लोड करना और पहली Activity बनाना शामिल है। Firebase प्रक्रिया शुरू होने के क्षण से पहली स्क्रीन के पूर्ण रेंडरिंग तक कोल्ड स्टार्ट मापता है। Google अनुशंसाओं के अनुसार, कोल्ड स्टार्ट P50 के लिए 500 ms और P99 के लिए 2 सेकंड से अधिक नहीं होना चाहिए।
Network request trace मेटाडेटा के साथ प्रत्येक HTTP अनुरोध को स्वचालित रूप से रिकॉर्ड करता है: URL, विधि, प्रतिक्रिया कोड, प्रतिक्रिया आकार, स्थानांतरण गति। Firebase Performance कंसोल में, आप URL पैटर्न द्वारा अनुरोधों को फ़िल्टर कर सकते हैं — उदाहरण के लिए, /api/v2/orders के सभी अनुरोध दिखाएँ। प्रत्येक पैटर्न के लिए, प्रतिक्रिया समय प्रतिशतक और 4xx/5xx त्रुटि दरें प्रदर्शित होती हैं। यह व्यक्तिगत अलर्ट सेट किए बिना किसी विशिष्ट API के क्षरण का तुरंत पता लगाने की अनुमति देता है।
स्क्रीन के लिए, Firebase Performance अतिरिक्त रूप से "frozen frames" मेट्रिक की गणना करता है — ऐसे फ्रेम जिन्हें रेंडर होने में 700 ms से अधिक समय लगा। इस तरह के UI फ्रीज़ को उपयोगकर्ता "ऐप फ्रीज़ हो गया" के रूप में महसूस करता है। यदि किसी स्क्रीन में 1% से अधिक frozen frames हैं, तो Firebase मेट्रिक को समस्याग्रस्त के रूप में चिह्नित करता है। Android के लिए, SDK अतिरिक्त रूप से slow renders मेट्रिक एकत्र करता है — 16 ms से अधिक लंबे फ्रेम (60 FPS चूकना)। Screen trace और frozen frames का संयोजन लोडिंग समय और एनिमेशन स्मूथनेस दोनों की पूरी तस्वीर देता है।
कस्टम ट्रेस किसी भी उपयोगकर्ता परिदृश्य की अवधि मापने की अनुमति देते हैं: ऑर्डर देना, क्लाउड में इमेज अपलोड करना, डेटा सिंक्रोनाइज़ करना। डेवलपर कोड में ट्रेस की शुरुआत और अंत स्पष्ट रूप से निर्दिष्ट करता है और परिदृश्य का नाम सेट करता है। स्वचालित ट्रेस के विपरीत, कस्टम ट्रेस मापे जाने वाले चीज़ पर पूर्ण नियंत्रण देते हैं और फ़िल्टरिंग के लिए विशेषताएँ जोड़ने की अनुमति देते हैं।
प्रत्येक कस्टम ट्रेस में विशेषताएँ हो सकती हैं — कुंजी-मूल्य जोड़े जो मेटाडेटा के रूप में जोड़े जाते हैं। विशेषताएँ डेटा को सेगमेंट करने में मदद करती हैं: उदाहरण के लिए, आप "promo_user" और "regular_user" के लिए अलग-अलग चेकआउट समय ट्रैक कर सकते हैं। Firebase Performance प्रति ट्रेस 5 विशेषताएँ और 100 अद्वितीय विशेषता मानों तक समर्थन करता है। विशेषताएँ इंडेक्स की जाती हैं और Firebase कंसोल में फ़िल्टरिंग के लिए उपलब्ध होती हैं।
Google I/O 2024 प्रस्तुति के अनुसार, Spotify टीम ट्रैक स्विचिंग समय की निगरानी के लिए Firebase कस्टम ट्रेस का उपयोग करती है। इसने ऑडियो बफ़र कैशिंग में एक बाधा की पहचान करके माध्य स्विचिंग समय को 400 ms से घटाकर 120 ms करने में मदद की। मुख्य अंतर्दृष्टि "device_model" विशेषता द्वारा फ़िल्टरिंग से आई — समस्या केवल Android 13 वाले Samsung उपकरणों पर प्रकट हुई।
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()
// चेकआउट परिदृश्य निष्पादित करना
validateCart()
processPayment()
confirmOrder()
trace.stop()
}
}
Android में Firebase Performance का एकीकरण तीन चरणों की आवश्यकता है: google-services प्लगइन जोड़ना, Firebase BOM (Bill of Materials) कनेक्ट करना और firebase-perf निर्भरता जोड़ना। Firebase Performance सभी Activity और फ़्रैगमेंट पर स्वचालित रूप से काम करता है यदि वे AppCompatActivity का उपयोग करते हैं। Compose स्क्रीन के लिए, Firebase कस्टम ट्रेस का उपयोग करने की अनुशंसा करता है क्योंकि स्वचालित screen trace सीधे Compose का समर्थन नहीं करता है।
एक महत्वपूर्ण बारीकियाँ: Firebase Performance Gradle प्लगइन कंपाइल समय पर ऐप्लिकेशन के बाइटकोड को संशोधित करता है। प्लगइन प्रत्येक Activity और OkHttp क्लाइंट में इंस्ट्रूमेंटिंग कोड जोड़ता है। इससे बिल्ड समय 5-10% और APK आकार 200-400 KB तक बढ़ सकता है। डीबग बिल्ड में, Firebase Performance स्वचालित रूप से अक्षम हो जाता है — यह स्थानीय डेवलपमेंट के दौरान मेट्रिक विरूपण को रोकता है। डीबग में जबरन सक्षम करने के लिए, मेनिफ़ेस्ट में firebasePerformanceInstrumentationEnabled फ़्लैग का उपयोग करें।
Firebase Performance iOS के लिए MetricKit और Android के लिए Perfetto का भी समर्थन करता है — निम्न-स्तरीय सिस्टम ट्रेसर। MetricKit ऑपरेटिंग सिस्टम स्तर पर फ्रेम दर, CPU और मेमोरी उपयोग के बारे में डेटा प्रदान करता है। Firebase इस डेटा को एकत्र करता है और उसी कंसोल में प्रदर्शित करता है जहाँ HTTP ट्रेस और screen traces दिखाए जाते हैं, एक इंटरफ़ेस में सिस्टम और ऐप्लिकेशन टेलीमेट्री को संयोजित करता है।
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 के लिए, Firebase Performance का एकीकरण CocoaPods या Swift Package Manager के माध्यम से किया जाता है। FirebasePerformance और FirebaseCore पॉड्स स्थापित करने के बाद, SDK स्वचालित रूप से मेट्रिक्स एकत्र करना शुरू कर देता है। HTTP अनुरोधों को इंटरसेप्ट करने के लिए, Firebase Performance iOS NSURLProtocol का उपयोग करता है — एक सिस्टम तंत्र जो ऐप्लिकेशन में सभी URL लोड को इंटरसेप्ट करने की अनुमति देता है। SDK स्टार्टअप पर अपना NSURLProtocol उपवर्ग पंजीकृत करता है, और URLSession के माध्यम से सभी अनुरोध स्वचालित रूप से निगरानी के अंतर्गत आते हैं।
iOS के लिए सीमा: Firebase Performance SwiftUI के लिए स्वचालित screen trace का समर्थन नहीं करता है। SwiftUI ऐप्लिकेशन के लिए, आपको View बॉडी को स्टार्ट/स्टॉप ब्लॉक में लपेटकर मैन्युअल रूप से कस्टम ट्रेस बनाना होगा। Firebase देशी SwiftUI समर्थन पर काम कर रहा है, लेकिन वर्तमान में SDK केवल UIView कंट्रोलर को स्वचालित रूप से ट्रेस करता है। UIKit + SwiftUI पर हाइब्रिड ऐप्लिकेशन के लिए, UIKit पर स्क्रीन बनाने और UIHostingController के माध्यम से SwiftUI एम्बेड करने की अनुशंसा की जाती है।
Firebase Performance iOS MetricKit के साथ एकीकरण भी प्रदान करता है — Apple का फ्रेमवर्क जो OS स्तर पर डायग्नोस्टिक डेटा एकत्र करता है। MetricKit CPU, GPU, मेमोरी और फ्रेम दर मेट्रिक्स के साथ दैनिक रिपोर्ट भेजता है। Firebase Performance इन रिपोर्टों को एकत्र करता है और कस्टम ट्रेस के साथ कंसोल में प्रदर्शित करता है, जो ऐप्लिकेशन और सिस्टम दोनों स्तरों पर प्रदर्शन की पूरी तस्वीर प्रदान करता है।
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()
}
}
अक्सर पूछे जाने वाले प्रश्न
हाँ, Firebase Performance मुफ्त Spark टियर पर प्रति दिन 500,000 इवेंट की सीमा के साथ उपलब्ध है। बड़े डेटा वॉल्यूम वाले प्रोजेक्ट के लिए, Blaze टियर का उपयोग पे-एज़-यू-गो मूल्य निर्धारण के साथ किया जाता है: सीमा से अधिक प्रति 1000 इवेंट $0.0003। अधिकांश स्टार्टअप और मध्यम आकार के प्रोजेक्ट के लिए, प्रति दिन 500,000 इवेंट पर्याप्त से अधिक है।
Firebase Performance SDK न्यूनतम प्रभाव के लिए अनुकूलित है। डेटा भेजना कम प्राथमिकता वाले बैकग्राउंड थ्रेड पर किया जाता है। Google परीक्षणों के अनुसार, लॉन्च समय पर SDK का प्रभाव 1% से कम है। SDK का आकार Android के लिए लगभग 300 KB और iOS के लिए 250 KB है।
App start (कोल्ड/वार्म), screen rendering (प्रत्येक स्क्रीन का रेंडरिंग समय), HTTP अनुरोध (समय, आकार, स्थिति) और frozen frames स्वचालित रूप से एकत्र किए जाते हैं। Android के लिए, slow renders आवृत्ति (>16 ms) और ANR भी एकत्र किया जाता है।
Firebase Performance डीबग मोड में स्वचालित रूप से अक्षम हो जाता है। जबरन नियंत्रण के लिए, Android मेनिफ़ेस्ट में फ़्लैग का उपयोग करें: firebasePerformanceInstrumentationEnabled। iOS के लिए, अक्षमीकरण लॉन्च स्कीम आर्गुमेंट में -FIRPerformanceEnabled NO फ़्लैग के माध्यम से किया जाता है।
हाँ, Firebase Performance BigQuery में निर्यात का समर्थन करता है। प्रोजेक्ट को BigQuery से कनेक्ट करने के बाद, सभी मेट्रिक्स स्वचालित रूप से BigQuery तालिकाओं में डुप्लिकेट हो जाते हैं, जो SQL क्वेरी और Looker Studio में डैशबोर्ड बनाने के लिए उपलब्ध होते हैं। निर्यात Firebase कंसोल के Integrations अनुभाग में कॉन्फ़िगर किया जाता है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें