हमारा मकसद, FCM का इस्तेमाल करके भेजे गए हर मैसेज को डिलीवर करना है. हालांकि, कभी-कभी हर मैसेज को डिलीवर करने से, उपयोगकर्ता अनुभव खराब हो जाता है. इसके अलावा, हमें कुछ सीमाएं तय करनी होती हैं, ताकि यह पक्का किया जा सके कि FCM, सभी भेजने वालों के लिए एक स्केलेबल सेवा उपलब्ध कराए. इस सेक्शन में बताई गई सीमाओं और कोटे के टाइप से, हमें इन अहम फ़ैक्टर के बीच संतुलन बनाए रखने में मदद मिलती है.
डाउनस्ट्रीम मैसेज थ्रॉटलिंग
HTTP v1 API में, डाउनस्ट्रीम मैसेजिंग के लिए, हर प्रोजेक्ट के लिए हर मिनट के कोटे की सुविधा दी गई है. हर मिनट में 6 लाख मैसेज के डिफ़ॉल्ट कोटे से, 99% से ज़्यादा FCM डेवलपर की ज़रूरतें पूरी हो जाती हैं. साथ ही, इससे सिस्टम की स्थिरता बनी रहती है और अचानक ट्रैफ़िक बढ़ने वाले प्रोजेक्ट पर पड़ने वाले असर को कम किया जा सकता है.
अचानक ट्रैफ़िक बढ़ने की वजह से, कोटे से ज़्यादा अनुरोध होने पर दिखने वाली गड़बड़ियां आ सकती हैं. कोटे से ज़्यादा अनुरोध होने पर, सिस्टम एचटीटीपी स्टेटस कोड 429 RESOURCE_EXHAUSTED ("QUOTA_EXCEEDED") दिखाता है. यह तब तक दिखता है, जब तक अगले मिनट में कोटा फिर से नहीं भर जाता. ज़्यादा लोड होने की स्थितियों में भी, 429 रिस्पॉन्स दिखाए जा सकते हैं. इसलिए, हमारा सुझाव है कि पब्लिश किए गए सुझावों के मुताबिक, 429 रिस्पॉन्स को मैनेज करें.
ध्यान रखें:
- डाउनस्ट्रीम कोटा, मैसेज की संख्या के हिसाब से तय होता है, न कि अनुरोधों की संख्या के हिसाब से.
- क्लाइंट की गड़बड़ियों (एचटीटीपी स्टेटस कोड 400-499) को गिना जाता है. हालांकि, 429 रिस्पॉन्स को नहीं गिना जाता.
- कोटे हर मिनट के हिसाब से तय किए जाते हैं. हालांकि, ये मिनट घड़ी के हिसाब से नहीं होते.
कोटे की निगरानी करना
Google Cloud कंसोल में, कोटा, इस्तेमाल, और गड़बड़ियां देखी जा सकती हैं:
एपीआई और सेवाएं को चुनें.
टेबल की सूची में से, Firebase Cloud Messaging API को चुनें.
कोटा और सिस्टम की सीमाएं को चुनें.
कोटा बढ़ाने का अनुरोध करना
कोटा बढ़ाने का अनुरोध करने से पहले, पक्का करें कि:
- आपका इस्तेमाल, हर दिन कम से कम पांच मिनट तक लगातार कोटे के 80% से ज़्यादा हो.
- क्लाइंट की गड़बड़ी का अनुपात 5% से कम हो. खास तौर पर, पीक ट्रैफ़िक के दौरान.
- आपने बड़े पैमाने पर मैसेज भेजने के लिए, सबसे सही तरीकों का पालन किया हो .
अगर आपने ये शर्तें पूरी कर ली हैं, तो Google Cloud Console में जाकर, +25%तक कोटा बढ़ाने का अनुरोध सबमिट किया जा सकता है. इसके लिए, यह तरीका अपनाएं:
- **कोटा और सिस्टम की सीमाएं** पर जाएं.
- टेबल में से, हर मिनट भेजे जाने वाले अनुरोध वाली लाइन को चुनें.
- बदलाव करें बटन पर क्लिक करें.
- अनुरोध सबमिट करने के लिए, दिए गए निर्देशों का पालन करें.
FCM अनुरोध को पूरा करने की पूरी कोशिश करेगा. हालांकि, कोटा बढ़ाने की कोई गारंटी नहीं दी जा सकती .
अगर आपको किसी लॉन्च या अस्थायी इवेंट की वजह से, डाउनस्ट्रीम मैसेजिंग के लिए ज़्यादा कोटे की ज़रूरत है, तो आपको Firebase की सहायता टीम से संपर्क करके, कोटा बढ़ाने का अनुरोध करना होगा. कोटा बढ़ाने का अनुरोध, कम से कम 15 दिन पहले करें, ताकि अनुरोध को प्रोसेस करने के लिए हमारे पास पर्याप्त समय हो. बड़े अनुरोधों (हर मिनट में 1.8 करोड़ से ज़्यादा मैसेज) के लिए, कम से कम 30 दिन पहले सूचना देना ज़रूरी है. हम हर साल, अस्थायी कोटे के सिर्फ़ दो इवेंट को मंज़ूरी दे सकते हैं. साल भर में, अस्थायी कोटे की कुल अवधि 30 दिनों से ज़्यादा नहीं होनी चाहिए. लॉन्च और खास इवेंट के अनुरोधों पर, क्लाइंट की गड़बड़ी के अनुपात और सबसे सही तरीकों से जुड़ी ज़रूरी शर्तें अब भी लागू होती हैं.
ज़्यादा जानने के लिए, FCM कोटे देखें.
विषय के हिसाब से मैसेज भेजने की सीमाएं और फ़ैनआउट थ्रॉटलिंग
ज़्यादा जानकारी के लिए, विषय के हिसाब से मैसेज भेजने के कोटे और सीमाएं देखें.
छोटा किए जा सकने वाले मैसेज की थ्रॉटलिंग
छोटा किए जा सकने वाले मैसेज में बताए गए तरीके के मुताबिक, ये ऐसे कॉन्टेंट-फ़्री सूचनाएं होती हैं जिन्हें एक के ऊपर एक छोटा किया जा सकता है. अगर कोई डेवलपर, किसी ऐप्लिकेशन को एक ही मैसेज बार-बार भेजता है, तो हम मैसेज भेजने में देरी करते हैं, ताकि उपयोगकर्ता की बैटरी पर पड़ने वाले असर को कम किया जा सके.
उदाहरण के लिए, अगर किसी एक डिवाइस पर नए ईमेल सिंक करने के लिए, बड़ी संख्या में अनुरोध भेजे जाते हैं, तो हम अगले ईमेल सिंक करने के अनुरोध में कुछ मिनट की देरी कर सकते हैं, ताकि डिवाइस कम औसत दर पर सिंक हो सके. यह थ्रॉटलिंग, सिर्फ़ उपयोगकर्ता की बैटरी पर पड़ने वाले असर को कम करने के लिए की जाती है.
अगर आपके इस्तेमाल के मामले में, अचानक बड़ी संख्या में मैसेज भेजने की ज़रूरत पड़ती है, तो छोटा न किए जा सकने वाले मैसेज सही विकल्प हो सकते हैं. ऐसे मैसेज के लिए, उनमें कॉन्टेंट शामिल करना न भूलें, ताकि बैटरी की खपत कम हो.
हम छोटा किए जा सकने वाले मैसेज की सीमा, हर ऐप्लिकेशन के लिए हर डिवाइस पर 20 मैसेज तय करते हैं. इसके बाद, हर तीन मिनट में एक मैसेज भेजा जा सकता है.
किसी एक डिवाइस पर मैसेज भेजने की ज़्यादा से ज़्यादा दर
Android के लिए, किसी एक डिवाइस पर हर मिनट में 240 और हर घंटे में 5,000 मैसेज भेजे जा सकते हैं. यह ज़्यादा थ्रेशोल्ड, कम समय के लिए अचानक ट्रैफ़िक बढ़ने की स्थितियों के लिए है. जैसे, जब लोग चैट पर तेज़ी से इंटरैक्ट कर रहे हों. इस सीमा से, मैसेज भेजने की लॉजिक में गड़बड़ियां होने से, किसी डिवाइस की बैटरी खत्म होने से रोका जा सकता है.
iOS के लिए, जब दर APNs की सीमाओं से ज़्यादा हो जाती है, तो हम गड़बड़ी का मैसेज दिखाते हैं.