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