अपने डेटाबेस की प्रोफ़ाइल बनाएं

Firebase सीएलआई में बने डेटाबेस प्रोफ़ाइलर टूल की मदद से, अपने Firebase रीयल टाइम डेटाबेस की परफ़ॉर्मेंस मापें. प्रोफ़ाइलर टूल, एक तय समयावधि में आपके डेटाबेस में सभी गतिविधियों को लॉग करता है और ज़्यादा जानकारी वाली रिपोर्ट जनरेट करता है. अपने डेटाबेस की परफ़ॉर्मेंस से जुड़ी समस्याओं को हल करने, समस्या वाले हिस्सों का पता लगाने, और इंडेक्स नहीं की गई क्वेरी को कम करने के लिए, ज़्यादा जानकारी वाली इस रिपोर्ट का इस्तेमाल करें.

प्रोफ़ाइल बनाएं

  1. अपने Firebase रीयल टाइम डेटाबेस की प्रोफ़ाइल बनाने से पहले, पक्का करें कि Firebase सीएलआई के सबसे नए वर्शन का इस्तेमाल किया जा रहा हो. साथ ही, यह भी पक्का करें कि आपने इसे उस डेटाबेस और प्रोजेक्ट के लिए शुरू कर दिया है जिसकी आपको प्रोफ़ाइल बनानी है. ध्यान दें कि प्रोफ़ाइल के लिए आपको उस प्रोजेक्ट का एडिटर या मालिक होना चाहिए.

  2. नीचे दिए गए निर्देश की मदद से, अपने डेटाबेस की प्रोफ़ाइल बनाएं:

    firebase database:profile
    प्रोफ़ाइलर, आपके डेटाबेस से कार्रवाइयां रिकॉर्ड करने और प्रोफ़ाइल बनाने पर, स्टेटस का मैसेज दिखाता है.

  3. प्रोफ़ाइल पूरी करने और नतीजे देखने के लिए, Enter दबाएं.

अपने नतीजों को समझना

प्रोफ़ाइलर टूल, आपके डेटाबेस के काम करने के तरीके के बारे में इकट्ठा किए गए डेटा को इकट्ठा करता है और नतीजों को तीन मुख्य कैटगरी में दिखाता है: स्पीड, बैंडविड्थ, और इंडेक्स नहीं की गई क्वेरी.

स्पीड

स्पीड रिपोर्ट हर तरह के ऑपरेशन के लिए सर्वर के रिस्पॉन्स टाइम (मिलीसेकंड में) को मापती है. हालांकि, स्पीड रिपोर्ट में मापी गई स्पीड से असली उपयोगकर्ताओं के अनुभव के बारे में, शायद यह जानकारी न मिले. नेटवर्क की स्थितियों समेत अलग-अलग वजहों से क्लाइंट-साइड पर इंतज़ार का समय बढ़ सकता है.

स्पीड रिपोर्ट में ये प्रॉपर्टी शामिल होती हैं:

  • पाथ: आपके डेटाबेस का वह पाथ जहां कार्रवाइयां हुई. अगर 25 से ज़्यादा चाइल्ड नोड हैं, तो प्रोफ़ाइलर टूल इन्हें पैरंट पाथ में छोटा कर देता है और $wildcard मार्कर जोड़ता है. आपको रिपोर्ट में अपने डेटाबेस की रूट डायरेक्ट्री दिख सकती है. इसे फ़ॉरवर्ड स्लैश / के ज़रिए दिखाया जाता है.
  • गिनती: किसी पाथ पर हुई कार्रवाइयों की संख्या.
  • एक्ज़ीक्यूशन की औसत स्पीड: वह औसत समय जो सर्वर को उस पाथ पर किसी खास ऑपरेशन टाइप को हैंडल करने के लिए ज़रूरी बिज़नेस लॉजिक को एक्ज़ीक्यूट करने में लगता है. यहां मापा गया समय अंतराल, उसके बाद शुरू होता है. इसे नीचे "औसत मंज़ूरी बाकी समय" से मापा जाता है.
  • औसत मंज़ूरी बाकी समय: अनुरोधों पर कार्रवाई करने से पहले, सूची में लगने वाला औसत समय. आम तौर पर, यह देरी क्लाइंट के शुरू किए गए सभी अनुरोधों के लिए होती है. सर्वर साइड से किए जाने वाले अनुरोध के लिए लगने वाला कुल समय, करीब-करीब उस अनुरोध के लिए लगने वाले समय और उसे लागू करने की रफ़्तार का कुल योग होता है.
  • अनुमति नहीं मिली: दिए गए पाथ पर कार्रवाइयों की संख्या, जिन्हें आपके डेटाबेस में Firebase डेटाबेस नियमों ने ब्लॉक किया था.
ऑपरेशन टाइप के हिसाब से स्पीड रिपोर्ट
एक्ज़ीक्यूशन स्पीड देखें डेटाबेस से डेटा पढ़ने के लिए क्लाइंट के अनुरोधों के लिए सर्वर रिस्पॉन्स टाइम. आम तौर पर, पढ़ने की प्रोसेस पूरी होने में लगने वाला समय, पढ़े जाने वाले डेटा के हिसाब से तय होता है. हालांकि, कुछ छोटे रीड में भी कैश मेमोरी को प्रीफ़ेच करने की वजह से देरी हो सकती है.
स्क्रिप्ट चलाने की स्पीड में बदलाव करें डेटाबेस में डेटा लिखने के लिए क्लाइंट के अनुरोधों के लिए सर्वर रिस्पॉन्स टाइम. प्रोग्राम किए जाने वाले डेटा की मात्रा के साथ, एक्ज़ीक्यूशन टाइम स्केल लिखें.
एक्ज़ीक्यूशन स्पीड जोड़ें डेटाबेस क्लाइंट को बनाए जाने वाले अनुरोधों के लिए सर्वर रिस्पॉन्स टाइम. कनेक्शन के अनुरोधों के लिए, कनेक्शन को मैनेज करने से जुड़ी इन-मेमोरी सर्वर-साइड की बुककीपिंग के मुकाबले, कनेक्शन के अनुरोधों के इंतज़ार का समय ज़्यादा होता है.
ब्रॉडकास्ट करने की स्पीड

रीयल टाइम अपडेट के लिए, दिए गए पाथ को सुनने वाले क्लाइंट को डेटा डिस्ट्रिब्यूट करने में सर्वर को लगने वाला समय.

ब्रॉडकास्ट स्पीड रिपोर्ट में काउंट प्रॉपर्टी, होने वाले ब्रॉडकास्ट की संख्या को इकट्ठा करती है, न कि उन क्लाइंट की संख्या जिन्हें जानकारी मिली. उदाहरण के लिए, अगर 10 क्लाइंट किसी पाथ को सुन रहे थे और सर्वर सभी 10 क्लाइंट पर अपडेट ब्रॉडकास्ट करता है, तो ब्रॉडकास्ट की संख्या सिर्फ़ एक ब्रॉडकास्ट को दिखाती है. भले ही, 10 क्लाइंट को डेटा मिला हो.

ब्रॉडकास्ट स्पीड रिपोर्ट में अनुमति नहीं मिली प्रॉपर्टी शामिल नहीं होती है.

बैंडविड्थ

बैंडविथ रिपोर्ट से पता चलता है कि आपका डेटाबेस, इनकमिंग और आउटगोइंग में कितने डेटा की खपत करता है. हालांकि, आपको बिलिंग का अनुमान लगाने के लिए बैंडविथ रिपोर्ट का इस्तेमाल नहीं करना चाहिए. ऐसा इसलिए, क्योंकि इसमें दूसरे कामों के लिए इस्तेमाल किया जाने वाला बैंडविड्थ शामिल नहीं होता, जैसे कि आपके डेटाबेस की प्रोफ़ाइल बनाना. बैंडविड्थ रिपोर्ट, मोटे तौर पर आपके डेटाबेस में और उससे पढ़ने, लिखने, और ब्रॉडकास्ट करने के दौरान इस्तेमाल हुए डेटा के पेलोड साइज़ का अनुमान लगाती है. यह टूल परफ़ॉर्मेंस का आकलन करता है. बिलिंग का अनुमान लगाने वाला टूल नहीं है.

बैंडविथ रिपोर्ट में ये प्रॉपर्टी शामिल होती हैं:

  • पाथ: आपके डेटाबेस का वह पाथ जहां कार्रवाइयां हुई. अगर 25 से ज़्यादा चाइल्ड नोड हैं, तो प्रोफ़ाइलर टूल इन्हें पैरंट पाथ में छोटा कर देता है.

  • कुल: दिए गए पाथ पर सभी कार्रवाइयों में इस्तेमाल किए गए कुल आउटगोइंग या इनकमिंग बाइट.

  • गिनती: किसी पाथ पर हुई कार्रवाइयों की संख्या.

  • औसत: दिए गए पाथ (बाइट/राइट या बाइट/रीड) के सभी ऑपरेशन में डाउनलोड या अपलोड किए गए बाइट की औसत संख्या.

बैंडविथ रिपोर्ट
डाउनलोड की गई बाइट क्लाइंट SDK टूल और REST API की मदद से भेजे गए, रीड और ब्रॉडकास्ट ऑपरेशन से खर्च होने वाला डेटा.
अपलोड की गई बाइट डेटाबेस सर्वर में आने वाले लिखने के अनुरोधों से डेटा का इस्तेमाल किया गया. मिटाए गए लिंक, आने वाले समय में 0 बाइट के साथ राइट के तौर पर दिखते हैं.

इंडेक्स नहीं की गई क्वेरी

इंडेक्स न की गई क्वेरी का डेटा महंगा हो सकता है, क्योंकि क्लाइंट किसी जगह से सारा डेटा डाउनलोड करके उस पर क्वेरी करते हैं. यह ज़रूरत से ज़्यादा बैंडविथ का इस्तेमाल करता है. अपने डेटाबेस की परफ़ॉर्मेंस को ऑप्टिमाइज़ करने के लिए, इंडेक्स नहीं की गई ज़्यादा से ज़्यादा क्वेरी का समाधान करें.

इंडेक्स नहीं की गई क्वेरी रिपोर्ट में ये प्रॉपर्टी दिखती हैं:

  • पाथ: आपके डेटाबेस का वह पाथ जहां इंडेक्स नहीं की गई क्वेरी हुई थीं.
  • इंडेक्स: इंडेक्स नहीं की गई क्वेरी का समाधान करने के लिए, आपको एक नियम जोड़ना चाहिए. अपना डेटा इंडेक्स करें में जाकर, इंडेक्स करने के बारे में ज़्यादा जानें.
  • गिनती: किसी पाथ पर, इंडेक्स नहीं की गई क्वेरी की संख्या.

बेहतर प्रोफ़ाइलिंग

आपके डेटाबेस में जो कार्रवाइयां हो रही हैं उनके बारे में जानने के लिए, --raw फ़्लैग का इस्तेमाल करें. इसके लिए, अपने डेटाबेस की प्रोफ़ाइल को इस तरह से बनाएं:

firebase database:profile --raw

रॉ आउटपुट में हर कार्रवाई के लिए क्लाइंट की जानकारी भी शामिल होती है, जैसे कि userAgent स्ट्रिंग और आईपी पते. अपने Firebase रीयल टाइम डेटाबेस में मौजूद अलग-अलग कार्रवाइयों के बारे में ज़्यादा जानें. इसके लिए, Firebase रीयल टाइम डेटाबेस के ऑपरेशन टाइप पर जाएं.

प्रोफ़ाइलर टूल: बिलिंग टूल नहीं है

बैंडविड्थ लागत का अनुमान लगाने के लिए प्रोफ़ाइलर टूल का इस्तेमाल न करें. प्रोफ़ाइलर टूल का मकसद, आपके डेटाबेस की परफ़ॉर्मेंस की पूरी जानकारी देना है. इससे कार्रवाइयों की निगरानी करने और समस्याओं को हल करने में मदद मिलती है, न कि बिलिंग का अनुमान लगाया जा सकता है. यह नेटवर्क ट्रैफ़िक को शामिल नहीं करता. यह सिर्फ़, रिस्पॉन्स में भेजे गए ऐप्लिकेशन डेटा का अनुमान रिकॉर्ड करता है.

यहां Firebase से बिल किए गए नेटवर्क ट्रैफ़िक के कुछ ऐसे सामान्य उदाहरण दिए गए हैं जो आपकी डेटाबेस प्रोफ़ाइल में शामिल नहीं हैं:

  • प्रोटोकॉल ओवरहेड: एक सेशन शुरू करने और उसे बनाए रखने के लिए सर्वर और क्लाइंट के बीच कुछ अतिरिक्त ट्रैफ़िक की ज़रूरत होती है. दिए गए प्रोटोकॉल के आधार पर, इस ट्रैफ़िक में ये शामिल हो सकते हैं: Firebase रीयल टाइम डेटाबेस का रीयलटाइम प्रोटोकॉल ओवरहेड, WebSocket ओवरहेड, और एचटीटीपी हेडर ओवरहेड. जब भी कोई कनेक्शन बनाया जाता है, तब कनेक्शन की लागत बढ़ाने में, यह ओवरहेड, एसएसएल एन्क्रिप्शन ओवरहेड के साथ मिलता है. हालांकि, आम तौर पर इसमें ज़्यादा बैंडविथ नहीं होता, लेकिन अगर आपके पेलोड बहुत कम हैं या आप बार-बार छोटे कनेक्शन बनाते हैं, तो यह प्रक्रिया काफ़ी ज़्यादा हो सकती है.
  • एसएसएल एन्क्रिप्शन ओवरहेड: सुरक्षित कनेक्शन के लिए ज़रूरी एसएसएल एन्क्रिप्शन ओवरहेड के लिए शुल्क लिया जाता है. औसतन, शुरुआती हैंडशेक के लिए करीब 3.5 केबी की लागत होती है. साथ ही, हर आउटगोइंग मैसेज पर TLS रिकॉर्ड हेडर के लिए यह करीब 40 केबी है. ज़्यादातर ऐप्लिकेशन के लिए, यह आपके बिल का एक छोटा प्रतिशत होता है. हालांकि, अगर आपके खास मामले में बहुत ज़्यादा एसएसएल हैंडशेक की ज़रूरत होती है, तो इसकी संख्या बहुत ज़्यादा हो सकती है. उदाहरण के लिए, जो डिवाइस TLS सेशन टिकट के साथ काम नहीं करते उन्हें बड़ी संख्या में एसएसएल कनेक्शन हैंडशेक की ज़रूरत पड़ सकती है.

अपने बिल को समझने और उसका अनुमान लगाने के बारे में ज़्यादा पढ़ें.