हमारा मकसद, FCM का इस्तेमाल करके भेजे गए हर मैसेज को डिलीवर करना है. हालांकि, हर मैसेज डिलीवर करने से कभी-कभी उपयोगकर्ता अनुभव खराब हो जाता है. अन्य मामलों में, हमें सीमाएं तय करनी होती हैं, ताकि यह पक्का किया जा सके कि FCM, सभी सेंडर के लिए एक बेहतर सेवा उपलब्ध कराता है. इस सेक्शन में बताई गई सीमाओं और कोटा के टाइप से, हमें इन ज़रूरी फ़ैक्टर को बैलेंस करने में मदद मिलती है.
डाउनस्ट्रीम मैसेज थ्रॉटलिंग
एचटीटीपी v1 एपीआई में, डाउनस्ट्रीम मैसेजिंग के लिए हर प्रोजेक्ट और हर मिनट के हिसाब से कोटा तय किए गए हैं. हर मिनट 600,000 मैसेज भेजने का डिफ़ॉल्ट कोटा, 99% से ज़्यादा FCM डेवलपर की ज़रूरतें पूरी करता है. साथ ही, यह सिस्टम को स्थिर रखता है और अचानक बढ़ने वाले प्रोजेक्ट के असर को कम करता है.
ट्रैफ़िक में अचानक बढ़ोतरी होने पर, कोटा से ज़्यादा अनुरोध होने पर दिखने वाली गड़बड़ियां हो सकती हैं. कोटा से ज़्यादा अनुरोध मिलने पर, सिस्टम अगले मिनट तक एचटीटीपी स्टेटस कोड 429 RESOURCE_EXHAUSTED ("QUOTA_EXCEEDED") दिखाता है. सर्वर पर ज़्यादा लोड होने की वजह से भी 429 रिस्पॉन्स मिल सकते हैं. इसलिए, हमारा सुझाव है कि आप पब्लिश किए गए सुझावों के मुताबिक, 429 रिस्पॉन्स को हैंडल करें.
ध्यान रखें:
- डाउनस्ट्रीम कोटा, अनुरोधों के बजाय मैसेज को मेज़र करता है.
- क्लाइंट की गड़बड़ियों (एचटीटीपी स्टेटस कोड 400-499) को गिना जाता है. हालांकि, 429 को छोड़कर.
- कोटा हर मिनट के हिसाब से तय किए जाते हैं. हालांकि, ये मिनट घड़ी के हिसाब से नहीं होते.
मॉनिटरिंग कोटा
Google Cloud Console में, कोटा, इस्तेमाल, और गड़बड़ियां देखी जा सकती हैं:
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 की तय सीमा से ज़्यादा है, तो हम गड़बड़ी का मैसेज दिखाते हैं.