इस पेज पर, Performance Monitoring का इस्तेमाल शुरू करने या Performance Monitoring की सुविधाओं और टूल का इस्तेमाल करने से जुड़ी समस्याओं को हल करने के बारे में सलाह दी गई है.
समस्या हल करने के लिए शुरुआती जांच
यहां दो सामान्य जांचों के बारे में बताया गया है. इन्हें गड़बड़ी ठीक करने से पहले, हर व्यक्ति को आज़माना चाहिए.
1. परफ़ॉर्मेंस इवेंट के लिए लॉग मैसेज देखना
अपने लॉग मैसेज देखें. इससे आपको यह पक्का करने में मदद मिलेगी कि Performance Monitoring SDK, परफ़ॉर्मेंस इवेंट कैप्चर कर रहा है.
परफ़ॉर्मेंस इवेंट के लिए लॉग मैसेज देखने का तरीका
बिल्ड के समय Performance Monitoring के लिए डीबग लॉगिंग चालू करें. इसके लिए, अपने ऐप्लिकेशन की
AndroidManifest.xml
फ़ाइल में<meta-data>
एलिमेंट जोड़ें. जैसे:<application> <meta-data android:name="firebase_performance_logcat_enabled" android:value="true" /> </application>
गड़बड़ी के मैसेज के लिए, अपने लॉग मैसेज देखें.
Performance Monitoring, अपने लॉग मैसेज को
FirebasePerformance
से टैग करता है. logcat फ़िल्टरिंग का इस्तेमाल करके, खास तौर पर अवधि के ट्रेस और एचटीटीपी/एस नेटवर्क के अनुरोध की लॉगिंग देखी जा सकती है. इसके लिए, यह कमांड चलाएं:adb logcat -s FirebasePerformance
इन लॉग की जांच करें. इनसे पता चलता है कि Performance Monitoring परफ़ॉर्मेंस इवेंट लॉग कर रहा है या नहीं:
Logging trace metric: TRACE_NAME, FIREBASE_PERFORMANCE_CONSOLE_URL
Logging network request trace: URL
Firebase कंसोल में अपना डेटा देखने के लिए, यूआरएल पर क्लिक करें. डैशबोर्ड में डेटा अपडेट होने में कुछ समय लग सकता है.
अगर आपका ऐप्लिकेशन परफ़ॉर्मेंस इवेंट लॉग नहीं कर रहा है, तो समस्या हल करने के सुझाव देखें.
2. Firebase का स्टेटस डैशबोर्ड देखना
अगर Firebase या Performance Monitoring में कोई ऐसी समस्या है जिसके बारे में पहले से जानकारी है, तो Firebase का स्टेटस डैशबोर्ड देखें.
Performance Monitoring का इस्तेमाल शुरू करना
अगर आपको Performance Monitoring (iOS+ | Android | Web) का इस्तेमाल शुरू करना है, तो समस्या हल करने से जुड़ी ये सलाह आपके काम आ सकती हैं. इनसे उन समस्याओं को हल करने में मदद मिल सकती है जिनमें Firebase को SDK टूल का पता लगाने या Firebase कंसोल में परफ़ॉर्मेंस का पहला डेटा दिखाने में समस्या आ रही है.
ऐप्लिकेशन में एसडीके टूल जोड़ा गया है, लेकिन कंसोल में अब भी एसडीके टूल जोड़ने का मैसेज दिख रहा है
जब Firebase को आपके ऐप्लिकेशन से इवेंट की जानकारी (जैसे, ऐप्लिकेशन के साथ इंटरैक्शन) मिलती है, तब वह यह पता लगा सकता है कि आपने अपने ऐप्लिकेशन में Performance Monitoring SDK टूल को सही तरीके से जोड़ा है या नहीं. आम तौर पर, ऐप्लिकेशन शुरू करने के 10 मिनट के अंदर, Firebase कंसोल के परफ़ॉर्मेंस डैशबोर्ड पर "एसडीके टूल का पता चला" मैसेज दिखता है. इसके बाद, 30 मिनट के अंदर डैशबोर्ड पर प्रोसेस किया गया शुरुआती डेटा दिखता है.
अगर आपने अपने ऐप्लिकेशन में एसडीके का नया वर्शन जोड़े हुए 10 मिनट से ज़्यादा हो गए हैं और आपको अब भी कोई बदलाव नहीं दिख रहा है, तो अपने लॉग मैसेज देखें. इससे यह पक्का किया जा सकेगा कि Performance Monitoring इवेंट लॉग कर रहा है. एसडीके का पता लगाने में देरी होने से जुड़ा मैसेज मिलने की समस्या हल करने के लिए, यहां दिया गया तरीका आज़माएं.
ऐप्लिकेशन इवेंट लॉग कर रहा है: समस्या हल करने का तरीका
पक्का करें कि Performance Monitoring Android SDK 19.1.0 या इसके बाद का वर्शन (या Firebase BoM 26.3.0 या इसके बाद का वर्शन) इस्तेमाल किया जा रहा हो. इसके बारे में जानने के लिए, रिलीज़ नोट देखें.
अगर अब भी स्थानीय तौर पर डेवलपमेंट किया जा रहा है, तो डेटा इकट्ठा करने के लिए ज़्यादा इवेंट जनरेट करें:
- अपने ऐप्लिकेशन को बैकग्राउंड और फ़ोरग्राउंड के बीच कई बार स्विच करके इवेंट जनरेट करें. इसके अलावा, स्क्रीन पर नेविगेट करके अपने ऐप्लिकेशन से इंटरैक्ट करें और/या नेटवर्क अनुरोध ट्रिगर करें.
पक्का करें कि आपकी Firebase कॉन्फ़िगरेशन फ़ाइल (
google-services.json
) को आपके ऐप्लिकेशन में सही तरीके से जोड़ा गया हो और आपने फ़ाइल में कोई बदलाव न किया हो. खास तौर पर, इनकी जांच करें:कॉन्फ़िगरेशन फ़ाइल के नाम में
(2)
जैसे अतिरिक्त वर्ण नहीं जोड़े गए हैं.कॉन्फ़िगरेशन फ़ाइल, आपके ऐप्लिकेशन की मॉड्यूल (ऐप्लिकेशन-लेवल) डायरेक्ट्री में होती है.
कॉन्फ़िगरेशन फ़ाइल में दिया गया Firebase Android ऐप्लिकेशन आईडी (
mobilesdk_app_id
) आपके ऐप्लिकेशन के लिए सही है. अपना Firebase ऐप्लिकेशन आईडी ढूंढने के लिए, settings प्रोजेक्ट सेटिंग के आपके ऐप्लिकेशन कार्ड पर जाएं.
अगर आपको अपने ऐप्लिकेशन की कॉन्फ़िगरेशन फ़ाइल में कोई गड़बड़ी दिखती है, तो यह तरीका आज़माएं:
अपने ऐप्लिकेशन में मौजूद कॉन्फ़िगरेशन फ़ाइल मिटाएं.
नई कॉन्फ़िगरेशन फ़ाइल डाउनलोड करने और उसे अपने Android ऐप्लिकेशन में जोड़ने के लिए, इन निर्देशों का पालन करें.
अगर एसडीके इवेंट लॉग कर रहा है और सब कुछ सही तरीके से सेट अप किया गया है, लेकिन आपको अब भी एसडीके का पता चलने से जुड़ा मैसेज या प्रोसेस किया गया डेटा नहीं दिख रहा है (10 मिनट के बाद भी), तो Firebase की सहायता टीम से संपर्क करें.
ऐप्लिकेशन में इवेंट लॉग नहीं हो रहे हैं: समस्या हल करने का तरीका
Performance Monitoring Gradle प्लगिन का सेटअप इस तरह देखें:
पक्का करें कि आपने प्लगिन को सही तरीके से जोड़ा हो. खास तौर पर, इनकी जांच करें:
- आपने अपने मॉड्यूल (ऐप्लिकेशन-लेवल)
build.gradle
फ़ाइल में प्लगिन (
) जोड़ा है.apply plugin: 'com.google.firebase.firebase-perf' - आपने प्रोजेक्ट-लेवल की
build.gradle
फ़ाइल में, प्लगिन (
) के लिए क्लासपाथ डिपेंडेंसी शामिल की हो.classpath 'com.google.firebase:perf-plugin:2.0.0'
- आपने अपने मॉड्यूल (ऐप्लिकेशन-लेवल)
पक्का करें कि इनमें से किसी भी फ़्लैग के ज़रिए, प्लगिन को बंद न किया गया हो:
instrumentationEnabled
में मौजूद (ऐप्लिकेशन-लेवल)build.gradle
फ़ाइल में- आपकी
gradle.properties
फ़ाइल मेंfirebasePerformanceInstrumentationEnabled
जांच करें कि आपकी
AndroidManifest.xml
फ़ाइल में, यहां दिए गए किसी भी फ़्लैग के ज़रिए Performance Monitoring एसडीके को बंद न किया गया हो:firebase_performance_collection_enabled
firebase_performance_collection_deactivated
पक्का करें कि Performance Monitoring, नॉट रनटाइम पर बंद न हो.
अगर आपको अपने ऐप्लिकेशन में बंद की गई कोई सुविधा नहीं दिखती है, तो Firebase की सहायता टीम से संपर्क करें.
Console में यह दिखता है कि SDK टूल का पता चल गया है, लेकिन कोई डेटा नहीं दिखता
Performance Monitoring परफ़ॉर्मेंस इवेंट के डेटा को प्रोसेस करता है. इसके बाद, इसे परफ़ॉर्मेंस डैशबोर्ड में दिखाता है.
अगर "SDK का पता चला" मैसेज दिखने के 24 घंटे से ज़्यादा समय बीत चुका है और आपको अब भी डेटा नहीं दिख रहा है, तो Firebase के स्टेटस डैशबोर्ड पर जाकर देखें कि क्या कोई ज्ञात समस्या है. अगर कोई समस्या नहीं है, तो Firebase की सहायता टीम से संपर्क करें.
सामान्य समस्याएं हल करना
अगर आपने SDK टूल को जोड़ लिया है और अपने ऐप्लिकेशन में Performance Monitoring का इस्तेमाल किया जा रहा है, तो समस्या हल करने से जुड़ी यहां दी गई सलाह से, Performance Monitoring की सुविधाओं और टूल से जुड़ी सामान्य समस्याओं को ठीक करने में मदद मिल सकती है.
ऐप्लिकेशन, परफ़ॉर्मेंस इवेंट लॉग नहीं कर रहा है
अगर आपको परफ़ॉर्मेंस इवेंट के लिए लॉग मैसेज नहीं दिख रहे हैं, तो समस्या हल करने के लिए यह तरीका आज़माएं:
Performance Monitoring Gradle प्लगिन का सेटअप इस तरह देखें:
पक्का करें कि आपने प्लगिन को सही तरीके से जोड़ा हो. खास तौर पर, इनकी जांच करें:
- आपने अपने मॉड्यूल (ऐप्लिकेशन-लेवल)
build.gradle
फ़ाइल में प्लगिन (
) जोड़ा है.apply plugin: 'com.google.firebase.firebase-perf' - आपने प्रोजेक्ट-लेवल की
build.gradle
फ़ाइल में, प्लगिन (
) के लिए क्लासपाथ डिपेंडेंसी शामिल की हो.classpath 'com.google.firebase:perf-plugin:2.0.0'
- आपने अपने मॉड्यूल (ऐप्लिकेशन-लेवल)
पक्का करें कि इनमें से किसी भी फ़्लैग के ज़रिए, प्लगिन को बंद न किया गया हो:
instrumentationEnabled
में मौजूद (ऐप्लिकेशन-लेवल)build.gradle
फ़ाइल में- आपकी
gradle.properties
फ़ाइल मेंfirebasePerformanceInstrumentationEnabled
जांच करें कि आपकी
AndroidManifest.xml
फ़ाइल में, यहां दिए गए किसी भी फ़्लैग के ज़रिए Performance Monitoring एसडीके को बंद न किया गया हो:firebase_performance_collection_enabled
firebase_performance_collection_deactivated
पक्का करें कि Performance Monitoring, नॉट रनटाइम पर बंद न हो.
अगर आपको अपने ऐप्लिकेशन में बंद की गई कोई सुविधा नहीं दिखती है, तो Firebase की सहायता टीम से संपर्क करें.
परफ़ॉर्मेंस डैशबोर्ड में, स्क्रीन ट्रेस का डेटा मौजूद नहीं है
अगर आपको स्क्रीन रेंडरिंग ट्रेस का डेटा नहीं दिख रहा है, तो समस्या हल करने के लिए यह तरीका आज़माएं:
पक्का करें कि Android SDK (v22.0.0) का नया वर्शन इस्तेमाल किया जा रहा हो. स्क्रीन रेंडरिंग के ट्रेस, सिर्फ़ v15.2.0 या इसके बाद के वर्शन में उपलब्ध हैं.
पक्का करें कि आपने किसी स्क्रीन के लिए, हार्डवेयर से तेज़ी लाएं सुविधा को मैन्युअल तरीके से बंद न किया हो.
पक्का करें कि DexGuard या Jack का इस्तेमाल न किया जा रहा हो. Performance Monitoring इन टूलचेन के साथ काम नहीं करता है.
DexGuard, ऐप्लिकेशन के शुरू होने, ऐप्लिकेशन के फ़ोरग्राउंड में होने, और ऐप्लिकेशन के बैकग्राउंड में होने के डेटा को अपने-आप इकट्ठा होने से रोकता है. हालांकि, अगर आपका ऐप्लिकेशन DexGuard का इस्तेमाल करता है, तो कस्टम कोड ट्रेस सामान्य तरीके से काम करने चाहिए.
Jack अब काम नहीं करता. इसलिए, आम तौर पर इसका इस्तेमाल आपके ऐप्लिकेशन में नहीं किया जाना चाहिए.
परफ़ॉर्मेंस डैशबोर्ड में कस्टम ट्रेस का डेटा मौजूद नहीं है
क्या आपको अपने-आप इकट्ठा किए गए ट्रेस के लिए परफ़ॉर्मेंस डेटा दिख रहा है, लेकिन कस्टम कोड ट्रेस के लिए नहीं? समस्या हल करने के लिए, यह तरीका आज़माएं:
अगर आपने Trace API की मदद से, कस्टम कोड ट्रेस को इंस्ट्रुमेंट किया है, तो ट्रेस के सेटअप की जांच करें. खास तौर पर, इनकी जांच करें:
- कस्टम कोड ट्रेस और कस्टम मेट्रिक के नाम इन ज़रूरी शर्तों को पूरा करते हों: शुरुआत या आखिर में कोई खाली जगह न हो, शुरुआत में अंडरस्कोर (
_
) वर्ण न हो, और ज़्यादा से ज़्यादा 32 वर्ण हों. - सभी ट्रेस शुरू और बंद किए जाने चाहिए. ऐसे किसी भी ट्रेस को लॉग नहीं किया जाएगा जो शुरू नहीं हुआ है, बंद नहीं हुआ है या शुरू होने से पहले बंद हो गया है.
- कस्टम कोड ट्रेस और कस्टम मेट्रिक के नाम इन ज़रूरी शर्तों को पूरा करते हों: शुरुआत या आखिर में कोई खाली जगह न हो, शुरुआत में अंडरस्कोर (
अगर आपने
@AddTrace
नोटेशन की मदद से कस्टम कोड ट्रेस किए हैं, तो Performance Monitoring Gradle प्लगिन का सेटअप देखें:पक्का करें कि आपने प्लगिन को सही तरीके से जोड़ा हो. खास तौर पर, इनकी जांच करें:
- आपने अपने मॉड्यूल (ऐप्लिकेशन-लेवल)
build.gradle
फ़ाइल में प्लगिन (
) जोड़ा है.apply plugin: 'com.google.firebase.firebase-perf' - आपने प्रोजेक्ट-लेवल की
build.gradle
फ़ाइल में, प्लगिन (
) के लिए क्लासपाथ डिपेंडेंसी शामिल की हो.classpath 'com.google.firebase:perf-plugin:2.0.0'
- आपने अपने मॉड्यूल (ऐप्लिकेशन-लेवल)
पक्का करें कि इनमें से किसी भी फ़्लैग के ज़रिए, प्लगिन को बंद न किया गया हो:
instrumentationEnabled
में मौजूद (ऐप्लिकेशन-लेवल)build.gradle
फ़ाइल में- आपकी
gradle.properties
फ़ाइल मेंfirebasePerformanceInstrumentationEnabled
अपने लॉग मैसेज देखें, ताकि यह पक्का किया जा सके कि Performance Monitoring, उम्मीद के मुताबिक कस्टम कोड ट्रेस लॉग कर रहा है.
अगर Performance Monitoring इवेंट लॉग कर रहा है, लेकिन 24 घंटे बाद भी कोई डेटा नहीं दिखता है, तो Firebase की सहायता टीम से संपर्क करें.
परफ़ॉर्मेंस डैशबोर्ड में नेटवर्क अनुरोध का डेटा मौजूद नहीं है
अगर आपको नेटवर्क अनुरोध का डेटा नहीं दिख रहा है, तो समस्या हल करने के लिए यहां दिया गया तरीका आज़माएं:
Android ऐप्लिकेशन के लिए, Performance Monitoring Gradle प्लग इन, इंस्ट्रुमेंटेशन की सुविधा चालू करता है. इससे एचटीटीपी/एस नेटवर्क अनुरोधों की अपने-आप निगरानी की जा सकती है. इनकी जांच करें:
पक्का करें कि आपने प्लगिन को सही तरीके से जोड़ा हो. खास तौर पर, इनकी जांच करें:
- आपने अपने मॉड्यूल (ऐप्लिकेशन-लेवल)
build.gradle
फ़ाइल में प्लगिन (
) जोड़ा है.apply plugin: 'com.google.firebase.firebase-perf' - आपने प्रोजेक्ट-लेवल की
build.gradle
फ़ाइल में, प्लगिन (
) के लिए क्लासपाथ डिपेंडेंसी शामिल की हो.classpath 'com.google.firebase:perf-plugin:2.0.0'
- आपने अपने मॉड्यूल (ऐप्लिकेशन-लेवल)
पक्का करें कि इनमें से किसी भी फ़्लैग के ज़रिए, प्लगिन को बंद न किया गया हो:
instrumentationEnabled
में मौजूद (ऐप्लिकेशन-लेवल)build.gradle
फ़ाइल में- आपकी
gradle.properties
फ़ाइल मेंfirebasePerformanceInstrumentationEnabled
देखें कि नेटवर्क लाइब्रेरी, आपके सिस्टम के साथ काम करती है या नहीं. Performance Monitoring इन नेटवर्किंग लाइब्रेरी का इस्तेमाल करने वाले नेटवर्क अनुरोधों के लिए, मेट्रिक अपने-आप इकट्ठा करता है: OkHttp 3.x.x, Java's URLConnection, और Apache HttpClient.
ध्यान दें कि नेटवर्क अनुरोधों के लिए कस्टम मॉनिटरिंग जोड़ी जा सकती है.
इन बातों का ध्यान रखें:
आपके कोड और कोड में इस्तेमाल की गई नेटवर्किंग लाइब्रेरी के व्यवहार के आधार पर, Performance Monitoring सिर्फ़ उन नेटवर्क अनुरोधों की रिपोर्ट दे सकता है जो पूरे हो चुके हैं. इसका मतलब है कि खुले हुए HTTP/S कनेक्शन की जानकारी नहीं दी जा सकती.
Performance Monitoring, DexGuard और Jack के साथ काम नहीं करता.
- DexGuard, एचटीटीपी/एस नेटवर्क अनुरोधों की निगरानी करने की सुविधा बंद कर देता है.
- Jack अब काम नहीं करता. इसलिए, आम तौर पर इसका इस्तेमाल आपके ऐप्लिकेशन में नहीं किया जाना चाहिए.
Performance Monitoring, अमान्य
Content-Type
हेडर वाले नेटवर्क अनुरोधों की रिपोर्ट नहीं करता. हालांकि,Content-Type
हेडर के बिना किए गए नेटवर्क अनुरोध अब भी स्वीकार किए जाएंगे.
नेटवर्क अनुरोध का डेटा, उम्मीद के मुताबिक इकट्ठा नहीं हो रहा है
यूआरएल पैटर्न के तहत, Performance Monitoring नेटवर्क अनुरोध के डेटा को कैसे एग्रीगेट करता है, इस बारे में ज़्यादा जानें.
कस्टम यूआरएल पैटर्न भी आज़माए जा सकते हैं!
अक्सर पूछे जाने वाले सवाल
Project के होम पेज पर मौजूद परफ़ॉर्मेंस कार्ड में, सबसे ज़्यादा समस्याएं दिखाने वाली सुविधा का क्या हुआ?
हमने हाल ही में, थ्रेशोल्ड पार होने पर अपने-आप सूचना देने वाली सुविधा लॉन्च की है. इसी वजह से, हमने सबसे ज़्यादा समस्याएं सेक्शन को हाल के अलर्ट सेक्शन से बदल दिया है. समस्याएं अब बंद कर दी गई हैं और उनकी जगह सूचनाओं को शामिल कर दिया गया है.
परफ़ॉर्मेंस कार्ड में सबसे ऊपर मौजूद ऐप्लिकेशन चुनने वाले टूल की मदद से, हाल की सूचनाएं में मौजूद सूचनाओं को फ़िल्टर किया जा सकता है. चुने गए ऐप्लिकेशन के लिए, सिर्फ़ तीन सबसे हाल की चेतावनियां दिखाई जाती हैं.
सूचनाओं के बारे में ज़्यादा जानने के लिए, परफ़ॉर्मेंस से जुड़ी समस्याओं के लिए सूचनाएं सेट अप करना लेख पढ़ें.
कंसोल में समस्याओं के लिए थ्रेशोल्ड सेट करने की सुविधा का क्या हुआ?
Performance Monitoring, तय किए गए थ्रेशोल्ड से ज़्यादा वाली मेट्रिक के लिए सूचनाएं पाने की सुविधा देता है. परफ़ॉर्मेंस मेट्रिक के लिए कॉन्फ़िगर किए जा सकने वाले इन थ्रेशोल्ड की वजह से भ्रम की स्थिति पैदा हो सकती है. इसलिए, हमने समस्याओं के लिए थ्रेशोल्ड कॉन्फ़िगर करने की सुविधा हटा दी है.
Firebase कंसोल में, 'जानकारी और मेट्रिक' सेक्शन का क्या हुआ?
हमने समस्या हल करने के तरीके को बेहतर बनाने के लिए, 'जानकारी' और 'मेट्रिक' पेजों को नए सिरे से डिज़ाइन किए गए, एक ही जगह पर मौजूद यूज़र इंटरफ़ेस (यूआई) से बदल दिया है. समस्या हल करने से जुड़ा यह नया यूज़र इंटरफ़ेस (यूआई), वही मुख्य सुविधाएं देता है जो 'जानकारी और मेट्रिक' सेक्शन में मिलती थीं. समस्या हल करने के बारे में ज़्यादा जानने के लिए, किसी खास ट्रेस के लिए ज़्यादा डेटा देखना लेख पढ़ें.
नमूनों की संख्या मेरी उम्मीद के मुताबिक क्यों नहीं है?
Performance Monitoring आपके ऐप्लिकेशन के उपयोगकर्ताओं के डिवाइसों से परफ़ॉर्मेंस का डेटा इकट्ठा करता है. अगर आपके ऐप्लिकेशन का इस्तेमाल करने वाले लोगों की संख्या ज़्यादा है या ऐप्लिकेशन से परफ़ॉर्मेंस से जुड़ी बहुत ज़्यादा गतिविधि जनरेट होती है, तो Performance Monitoring, डेटा कलेक्शन को डिवाइसों के सबसेट तक सीमित कर सकता है. ऐसा प्रोसेस किए गए इवेंट की संख्या को कम करने के लिए किया जाता है. ये सीमाएं इतनी ज़्यादा हैं कि कम इवेंट होने पर भी, मेट्रिक की वैल्यू से यह पता चलता है कि उपयोगकर्ता को ऐप्लिकेशन इस्तेमाल करने का कैसा अनुभव मिला.
हम कितना डेटा इकट्ठा करते हैं, इसे मैनेज करने के लिए Performance Monitoring, सैंपलिंग के इन विकल्पों का इस्तेमाल करता है:
डिवाइस पर रेट लिमिट तय करना: किसी डिवाइस को अचानक कई ट्रेस भेजने से रोकने के लिए, हम किसी डिवाइस से भेजे जाने वाले कोड और नेटवर्क अनुरोध के ट्रेस की संख्या को सीमित करते हैं. इसके तहत, हर 10 मिनट में 300 इवेंट भेजे जा सकते हैं. इस तरीके से, डिवाइस को लूप किए गए इंस्ट्रुमेंटेशन से बचाया जाता है. ये इंस्ट्रुमेंटेशन, परफ़ॉर्मेंस का ज़्यादा डेटा भेज सकते हैं. साथ ही, यह किसी एक डिवाइस को परफ़ॉर्मेंस मेज़रमेंट को गलत तरीके से पेश करने से रोकता है.
डाइनैमिक सैंपलिंग: Performance Monitoring हर दिन, ऐप्लिकेशन के सभी उपयोगकर्ताओं के लिए, ऐप्लिकेशन के हिसाब से कोड ट्रेस और नेटवर्क अनुरोध ट्रेस की सीमित संख्या इकट्ठा करता है. डाइनैमिक सैंपलिंग रेट को डिवाइसों पर फ़ेच किया जाता है. इसके लिए, Firebase Remote Config का इस्तेमाल किया जाता है. इससे यह तय किया जाता है कि किसी डिवाइस को ट्रेस कैप्चर करके भेजना चाहिए या नहीं. सैंपलिंग के लिए नहीं चुना गया डिवाइस, कोई भी इवेंट नहीं भेजता है. डाइनैमिक सैंपलिंग रेट, ऐप्लिकेशन के हिसाब से तय होता है. यह इस तरह से अडजस्ट होता है कि इकट्ठा किए गए डेटा का कुल वॉल्यूम, तय सीमा से कम रहे.
जिन प्रोजेक्ट के लिए BigQuery इंटिग्रेशन चालू है उन्हें नेटवर्क अनुरोधों के ट्रेस की संख्या के लिए ज़्यादा सीमा मिलती है.
उपयोगकर्ता सेशन, उपयोगकर्ता के डिवाइस से ज़्यादा और ज़्यादा जानकारी वाला डेटा भेजते हैं. इसलिए, इस डेटा को कैप्चर और भेजने के लिए ज़्यादा संसाधनों की ज़रूरत होती है. उपयोगकर्ता सेशन के असर को कम करने के लिए, Performance Monitoring सेशन की संख्या को भी सीमित कर सकता है.
सर्वर-साइड पर दर सीमित करना: यह पक्का करने के लिए कि ऐप्लिकेशन, सैंपलिंग की सीमा से ज़्यादा डेटा न भेजें, Performance Monitoring सर्वर-साइड सैंपलिंग का इस्तेमाल कर सकता है. इससे डिवाइसों से मिले कुछ इवेंट को ड्रॉप किया जा सकता है. हालांकि, इस तरह की सीमा तय करने से हमारी मेट्रिक की परफ़ॉर्मेंस पर कोई असर नहीं पड़ता. हालांकि, इससे पैटर्न में मामूली बदलाव हो सकते हैं. इनमें ये शामिल हैं:
- ट्रेस की संख्या, कोड के किसी हिस्से को एक्ज़ीक्यूट किए जाने की संख्या से अलग हो सकती है.
- कोड में एक-दूसरे से जुड़े हुए ट्रेस में, हर ट्रेस के लिए अलग-अलग संख्या में सैंपल हो सकते हैं.
कंसोल में समस्याएं टैब का क्या हुआ?
हमने 'समस्याएं' टैब की जगह चेतावनियों की सुविधा शुरू की है. यह सुविधा, आपके सेट किए गए थ्रेशोल्ड से ज़्यादा होने पर, आपको अपने-आप सूचना देती है. अब आपको थ्रेशोल्ड की स्थिति का पता लगाने के लिए, Firebase कंसोल को मैन्युअल तरीके से देखने की ज़रूरत नहीं है. चेतावनी की सुविधा के बारे में जानने के लिए, परफ़ॉर्मेंस से जुड़ी समस्याओं के लिए चेतावनियां सेट अप करना लेख पढ़ें.
कंसोल में मौजूद डिवाइस पर और नेटवर्क टैब का क्या हुआ? उन पेजों पर मौजूद ट्रेस को कैसे देखा जा सकता है?
हमने Firebase कंसोल के Performance Monitoring सेक्शन को फिर से डिज़ाइन किया है, ताकि डैशबोर्ड टैब में आपको अपनी मुख्य मेट्रिक और सभी ट्रेस एक ही जगह पर दिखें. रीडिज़ाइन के तहत, हमने डिवाइस पर और नेटवर्क पेज हटा दिए हैं.
डैशबोर्ड टैब में सबसे नीचे मौजूद ट्रेस टेबल में वही सारी जानकारी होती है जो डिवाइस पर और नेटवर्क टैब में दिखती है. हालांकि, इसमें कुछ और सुविधाएं भी जोड़ी गई हैं. जैसे, किसी खास मेट्रिक के लिए प्रतिशत में हुए बदलाव के हिसाब से अपने ट्रेस को क्रम से लगाने की सुविधा. किसी खास ट्रेस के लिए, सभी मेट्रिक और डेटा देखने के लिए, ट्रेस टेबल में ट्रेस के नाम पर क्लिक करें.
ट्रेस टेबल के इन सब-टैब में अपने ट्रेस देखें:
- नेटवर्क अनुरोधों के ट्रेस (आउट-ऑफ़-द-बॉक्स और कस्टम, दोनों) — नेटवर्क अनुरोध सब-टैब
- कस्टम कोड ट्रेस — कस्टम ट्रेस सब-टैब
- ऐप्लिकेशन शुरू होने, फ़ोरग्राउंड में ऐप्लिकेशन चलने, और बैकग्राउंड में ऐप्लिकेशन चलने के ट्रेस — कस्टम ट्रेस सब-टैब
- स्क्रीन रेंडरिंग ट्रेस — स्क्रीन रेंडरिंग सब-टैब
- पेज लोड ट्रेस — पेज लोड सबटैब
ट्रेस टेबल और मेट्रिक और डेटा देखने के बारे में ज़्यादा जानने के लिए, कंसोल के खास जानकारी वाले पेज पर जाएं (iOS+ | Android | वेब).
ज़्यादा समय लेने वाले और रुके हुए फ़्रेम की संख्या मेरी उम्मीद के मुताबिक क्यों नहीं है?
रेंडरिंग की प्रक्रिया को धीमा करने वाले फ़्रेम और फ़्रीज़ किए गए फ़्रेम का हिसाब, डिवाइस के रीफ़्रेश रेट के आधार पर लगाया जाता है. इसके लिए, 60 हर्ट्ज़ का रीफ़्रेश रेट माना जाता है. अगर किसी डिवाइस का रीफ़्रेश रेट 60 हर्ट्ज़ से कम है, तो हर फ़्रेम को रेंडर होने में ज़्यादा समय लगेगा, क्योंकि हर सेकंड में कम फ़्रेम रेंडर होते हैं. रेंडर होने में ज़्यादा समय लगने की वजह से, रेंडर होने में बहुत ज़्यादा समय लेने वाले या फ़्रीज़ हुए फ़्रेम की ज़्यादा शिकायतें की जा सकती हैं. ऐसा इसलिए, क्योंकि ज़्यादा फ़्रेम धीरे-धीरे रेंडर होंगे या फ़्रीज़ हो जाएंगे. हालांकि, अगर किसी डिवाइस का रीफ़्रेश रेट 60 हर्ट्ज़ से ज़्यादा है, तो हर फ़्रेम को रेंडर होने में कम समय लगेगा. इससे कम फ़्रेम के धीमे चलने या फ़्रीज़ होने की शिकायत की जा सकती है. Performance Monitoring SDK टूल में फ़िलहाल यह समस्या आ रही है.
मुझे फ़्रैगमेंट ट्रेस क्यों नहीं दिख रहे हैं?
ऐप्लिकेशन गतिविधि के साथ-साथ फ़्रैगमेंट की परफ़ॉर्मेंस देखने के लिए, पक्का करें कि आपका ऐप्लिकेशन Performance Monitoring Android SDK के 20.1.0 या इसके बाद के वर्शन का इस्तेमाल कर रहा हो. ज़्यादा जानने के लिए, अपने ऐप्लिकेशन में परफ़ॉर्मेंस मॉनिटरिंग की सुविधा जोड़ना लेख पढ़ें.
मुझे कैसे पता चलेगा कि कौनसे ट्रेस, फ़्रैगमेंट और ऐक्टिविटी से जुड़े हैं?
फ़्रैगमेंट और ऐक्टिविटी के हर ट्रेस को, आपके ऐप्लिकेशन में तय किए गए क्लास नेम के आधार पर बनाया जाता है. स्क्रीन ट्रेस में, st प्रीफ़िक्स होता है. इसके बाद, क्लास का नाम होता है. Firebase कंसोल में, प्रीफ़िक्स हटा दिया जाता है. ज़्यादा जानने के लिए, स्क्रीन रेंडरिंग की परफ़ॉर्मेंस से जुड़े डेटा के बारे में जानें (Apple और Android ऐप्लिकेशन) लेख पढ़ें.
मुझे अन्य ट्रेस की तुलना में, फ़्रैगमेंट ट्रेस कम क्यों दिख रहे हैं?
Performance Monitoring किसी डिवाइस पर इकट्ठा किए गए सभी इवेंट के लिए, इवेंट सैंपलिंग करता है. इस तरीके से, हमें उपयोगकर्ता के डिवाइसों से सिर्फ़ ज़रूरी इवेंट इकट्ठा करने में मदद मिलती है, ताकि हम परफ़ॉर्मेंस मेट्रिक उपलब्ध करा सकें.
मेरे ऐप्लिकेशन की रेंडरिंग परफ़ॉर्मेंस में कोई समस्या होने पर, मुझे इसकी सूचना कैसे मिलती है?
Performance Monitoring की मदद से, अपनी ज़रूरत की मेट्रिक के लिए सूचनाएं सेट अप की जा सकती हैं. जनरेट किए गए स्क्रीन रेंडरिंग ट्रेस के लिए, सूचनाएं सेट अप की जा सकती हैं. इससे आपको तब सूचना मिलेगी, जब धीमे और फ़्रीज़ हुए फ़्रेम का प्रतिशत, आपके सेट किए गए थ्रेशोल्ड से ज़्यादा हो जाएगा.
Performance Monitoring Gradle प्लगिन चालू करने के बाद, मेरे ऐप्लिकेशन को बिल्ड होने में ज़्यादा समय लग रहा है. मैं इसे कैसे बेहतर बनाऊं?
Performance Monitoring for Android, बाइटकोड इंस्ट्रुमेंटेशन का इस्तेमाल करता है. इससे कुछ ऐसी सुविधाएं मिलती हैं जो पहले से उपलब्ध होती हैं. जैसे, एचटीटीपी/एचटीटीपीएस नेटवर्क अनुरोधों की निगरानी करना. संकलन के दौरान, इस प्रोसेस में आपके ऐप्लिकेशन की सभी क्लास (डिपेंडेंसी भी शामिल हैं) को दोहराना पड़ता है. ऐसा इसलिए किया जाता है, ताकि उस कोड को इंस्ट्रुमेंट किया जा सके जो आपके ऐप्लिकेशन के नेटवर्क अनुरोध की परफ़ॉर्मेंस को मेज़र करने के लिए ज़रूरी है.
यहां कुछ ऐसे मुख्य फ़ैक्टर दिए गए हैं जिनकी वजह से, ऐप्लिकेशन बनाने में ज़्यादा समय लगता है:
- क्लास या फ़ाइलों की संख्या
- उनमें से हर क्लास का साइज़ (कोड की लाइनें)
- मशीन का कॉन्फ़िगरेशन
- शुरुआती बिल्ड बनाम बाद का बिल्ड (बाद के बिल्ड, आम तौर पर शुरुआती बिल्ड से ज़्यादा तेज़ी से होते हैं)
बिल्ड टाइम को ऑप्टिमाइज़ करने के लिए, अपने कोड को मॉड्यूल में बांटें.
Performance Monitoring प्लगिन के v1.3.3 वर्शन से, हमने लाइब्रेरी इनपुट की इंक्रीमेंटल बिल्ड प्रोसेसिंग और कैश मेमोरी में सेव करने की सुविधा को बेहतर बनाने पर ध्यान दिया है. बिल्ड टाइम में हुए हाल के सुधारों का फ़ायदा पाने के लिए, प्लगिन (v2.0.0) का नया वर्शन इस्तेमाल करें.
ध्यान दें कि अगर आपको बिल्ड करने में ज़्यादा समय लगने से बचना है, तो स्थानीय तौर पर अपनी डीबग बिल्ड के लिए, Performance Monitoring प्लगिन बंद किया जा सकता है. हालांकि, प्रोडक्शन बिल्ड के लिए इस तरीके का सुझाव नहीं दिया जाता, क्योंकि इससे आपके ऐप्लिकेशन में नेटवर्क अनुरोधों के लिए परफ़ॉर्मेंस मेज़रमेंट छूट सकता है.
अगर मुझे Performance Monitoring Gradle प्लगिन के साथ काम न करने वाली लाइब्रेरी की वजह से, बिल्ड से जुड़ी गड़बड़ियां मिलती हैं, तो मुझे क्या करना चाहिए?
Performance Monitoring for Android, बाइटकोड इंस्ट्रुमेंटेशन का इस्तेमाल करता है. इससे कुछ ऐसी सुविधाएं मिलती हैं जो पहले से उपलब्ध होती हैं. जैसे, एचटीटीपी/एचटीटीपीएस नेटवर्क अनुरोधों की निगरानी करना. संकलन के दौरान, इस प्रोसेस में आपके ऐप्लिकेशन की सभी क्लास (डिपेंडेंसी भी शामिल हैं) को दोहराना पड़ता है. ऐसा इसलिए किया जाता है, ताकि उस कोड को इंस्ट्रुमेंट किया जा सके जो आपके ऐप्लिकेशन के नेटवर्क अनुरोध की परफ़ॉर्मेंस को मेज़र करने के लिए ज़रूरी है.
अगर आपको Performance Monitoring प्लगिन के साथ इंटिग्रेट करने के बाद, JSR/RET are not supported with
computeFrames option
या इसी तरह की अन्य गड़बड़ियां मिलती हैं, तो इसकी वजह यह हो सकती है कि आपकी लाइब्रेरी, Performance Monitoring Gradle प्लगिन के साथ काम नहीं करती है.
इस समस्या से बचने के लिए, इन चरणों को पूरा करके, उन क्लास/लाइब्रेरी को इंस्ट्रुमेंटेशन से बाहर रखा जा सकता है जो इसके साथ काम नहीं करती हैं:
- Performance Monitoring Gradle प्लगिन को नए वर्शन (कम से कम v1.4.0) पर अपडेट करें.
- Android Gradle प्लगइन के वर्शन को v7.2.0 या इसके बाद के वर्शन पर अपडेट करें.
- अपने मॉड्यूल (ऐप्लिकेशन-लेवल) की
build.gradle
फ़ाइल में यह फ़्लैग जोड़ें, ताकि काम न करने वाली क्लास/लाइब्रेरी को इंस्ट्रुमेंटेशन से बाहर रखा जा सके: Android Gradle प्लगइन केandroid { // ... androidComponents { onVariants(selector().all(), { instrumentation.excludes.add("example.incompatible.library") }) } }
Instrumentation
एपीआई कीexclude
प्रॉपर्टी के बारे में ज़्यादा जानने के लिए, इंस्ट्रुमेंटेशन देखें.
अगर आपको ऐसी लाइब्रेरी की वजह से बिल्ड से जुड़ी गड़बड़ियां मिलती हैं जो आपके प्रोजेक्ट के साथ काम नहीं करती हैं, तो कृपया Github पर समस्या की शिकायत करें. इससे इन लाइब्रेरी को Performance Monitoring प्लगिन में इंस्ट्रुमेंट किए जाने से भी रोका जा सकेगा.
मेरे Performance Monitoring खाते का डेटा, BigQuery में एक्सपोर्ट होने में उम्मीद से ज़्यादा समय ले रहा है. क्या यह रीयल टाइम में नहीं होता है?
अगर आपने Firebase Performance Monitoring के लिए BigQuery इंटिग्रेशन चालू किया है, तो आपका डेटा दिन खत्म होने के 12 से 24 घंटे बाद BigQuery में एक्सपोर्ट किया जाएगा. दिन खत्म होने का समय पैसिफ़िक समय के हिसाब से होता है.
उदाहरण के लिए, 19 अप्रैल का डेटा, BigQuery में 20 अप्रैल को दोपहर 12 बजे से आधी रात के बीच उपलब्ध होगा. सभी तारीखें और समय, पैसिफ़िक समय के हिसाब से हैं.
डेटा को करीब-करीब रीयल-टाइम में प्रोसेस और डिसप्ले करना
"करीब-करीब रीयल-टाइम" परफ़ॉर्मेंस डेटा का क्या मतलब है?
Firebase Performance Monitoring, परफ़ॉर्मेंस से जुड़े इकट्ठा किए गए डेटा को प्रोसेस करता है. इससे Firebase कंसोल में, करीब-करीब रीयल-टाइम में डेटा दिखता है. प्रोसेस किया गया डेटा, इकट्ठा होने के कुछ ही मिनटों में कंसोल में दिखने लगता है. इसलिए, इसे "रीयल-टाइम के आस-पास" कहा जाता है.
करीब-करीब रीयल-टाइम में डेटा प्रोसेस करने की सुविधा का फ़ायदा लेने के लिए, पक्का करें कि आपका ऐप्लिकेशन, रीयल-टाइम के साथ काम करने वाले SDK टूल के वर्शन का इस्तेमाल करता हो.
मुझे अपने ऐप्लिकेशन के लिए, रीयल-टाइम में परफ़ॉर्मेंस का डेटा कैसे मिलेगा?
रीयल-टाइम के आस-पास डेटा प्रोसेसिंग की सुविधा का फ़ायदा पाने के लिए, आपको सिर्फ़ यह पक्का करना होगा कि आपका ऐप्लिकेशन, Performance Monitoring के ऐसे एसडीके वर्शन का इस्तेमाल करता हो जो रीयल-टाइम डेटा प्रोसेसिंग के साथ काम करता हो.
ये ऐसे SDK टूल के वर्शन हैं जो रीयल-टाइम में काम करते हैं:
- iOS — v7.3.0 या इसके बाद का वर्शन
- tvOS — v8.9.0 या उसके बाद का वर्शन
- Android — v19.0.10 या इसके बाद का वर्शन (या Firebase Android BoM v26.1.0 या इसके बाद का वर्शन)
- वेब — v7.14.0 या इसके बाद का वर्शन
ध्यान दें कि हम हमेशा एसडीके के सबसे नए वर्शन का इस्तेमाल करने का सुझाव देते हैं. हालांकि, ऊपर दिए गए किसी भी वर्शन से, Performance Monitoring को आपके डेटा को रीयल टाइम में प्रोसेस करने की अनुमति मिल जाएगी.
Performance Monitoring SDK के किन वर्शन को रीयल-टाइम में काम करने वाला माना जाता है?
SDK टूल के ये वर्शन, रीयल-टाइम में डेटा प्रोसेस करने की सुविधा के साथ काम करते हैं:
- iOS — v7.3.0 या इसके बाद का वर्शन
- tvOS — v8.9.0 या उसके बाद का वर्शन
- Android — v19.0.10 या इसके बाद का वर्शन (या Firebase Android BoM v26.1.0 या इसके बाद का वर्शन)
- वेब — v7.14.0 या इसके बाद का वर्शन
ध्यान दें कि हम हमेशा एसडीके के सबसे नए वर्शन का इस्तेमाल करने का सुझाव देते हैं. हालांकि, ऊपर दिए गए किसी भी वर्शन से, Performance Monitoring को आपके डेटा को रीयल टाइम में प्रोसेस करने की अनुमति मिल जाएगी.
अगर मैंने अपने ऐप्लिकेशन को, रीयल-टाइम में काम करने वाले एसडीके के वर्शन का इस्तेमाल करने के लिए अपडेट नहीं किया, तो क्या होगा?
अगर आपका ऐप्लिकेशन, रीयल-टाइम रिपोर्टिंग की सुविधा के साथ काम करने वाले एसडीके वर्शन का इस्तेमाल नहीं करता है, तो भी आपको Firebase कंसोल में अपने ऐप्लिकेशन की परफ़ॉर्मेंस का पूरा डेटा दिखेगा. हालांकि, परफ़ॉर्मेंस डेटा दिखने में करीब 36 घंटे लगेंगे. यह समय, डेटा इकट्ठा होने के समय से शुरू होगा.
मैंने रीयल-टाइम में काम करने वाले SDK टूल के वर्शन पर अपडेट कर लिया है, लेकिन मेरे कुछ उपयोगकर्ता अब भी मेरे ऐप्लिकेशन के पुराने वर्शन इस्तेमाल कर रहे हैं. क्या मुझे Firebase कंसोल में, उनके परफ़ॉर्मेंस डेटा को देखना जारी रखना चाहिए?
हां! ऐप्लिकेशन इंस्टेंस, एसडीके के जिस भी वर्शन का इस्तेमाल करता है उससे कोई फ़र्क़ नहीं पड़ता. आपको अपने सभी उपयोगकर्ताओं का परफ़ॉर्मेंस डेटा दिखेगा.
हालांकि, अगर आपको हाल ही का डेटा (लगभग 36 घंटे से कम पुराना) देखना है, तो दिखाया गया डेटा, ऐप्लिकेशन इंस्टेंस के उन उपयोगकर्ताओं का होता है जो रीयल-टाइम के साथ काम करने वाले एसडीके वर्शन का इस्तेमाल कर रहे हैं. हालांकि, हाल ही का नहीं डेटा में, आपके ऐप्लिकेशन के सभी वर्शन का परफ़ॉर्मेंस डेटा शामिल होता है.
Firebase की सहायता टीम से संपर्क करना
अगर आपको Firebase सहायता टीम से संपर्क करना है, तो हमेशा अपना Firebase ऐप्लिकेशन आईडी शामिल करें. settings प्रोजेक्ट की सेटिंग में जाकर, आपके ऐप्लिकेशन कार्ड में अपना Firebase ऐप्लिकेशन आईडी ढूंढें.