FCM थ्रॉटलिंग और कोटा

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

डाउनस्ट्रीम मैसेज थ्रॉटलिंग

HTTP v1 API ने डाउनस्ट्रीम मैसेजिंग के लिए, हर प्रोजेक्ट के लिए हर मिनट के हिसाब से कोटा तय किया है. हर मिनट 600,000 मैसेज भेजने की डिफ़ॉल्ट सीमा, 99% से ज़्यादा FCM डेवलपर के लिए काफ़ी है. इससे सिस्टम की स्थिरता बनी रहती है और अचानक बढ़ने वाले प्रोजेक्ट पर असर कम पड़ता है.

ट्रैफ़िक में अचानक बढ़ोतरी होने पर, कोटा से ज़्यादा अनुरोध होने पर दिखने वाली गड़बड़ियां हो सकती हैं. कोटा से ज़्यादा अनुरोध मिलने पर, सिस्टम अगले मिनट तक एचटीटीपी स्टेटस कोड 429 RESOURCE_EXHAUSTED ("QUOTA_EXCEEDED") दिखाता है. सर्वर पर ज़्यादा लोड होने की वजह से भी 429 रिस्पॉन्स मिल सकते हैं. इसलिए, हमारा सुझाव है कि आप पब्लिश किए गए सुझावों के मुताबिक, 429 रिस्पॉन्स को हैंडल करें.

ध्यान रखें:

  • डाउनस्ट्रीम कोटा, अनुरोधों के बजाय मैसेज को मेज़र करता है.
  • क्लाइंट की गड़बड़ियों (एचटीटीपी स्टेटस कोड 400-499) को गिना जाता है. हालांकि, 429 को छोड़कर.
  • कोटा हर मिनट के हिसाब से तय किए जाते हैं. हालांकि, ये मिनट घड़ी के हिसाब से नहीं होते.

मॉनिटरिंग कोटा

Google Cloud Console पर, इन तरीकों से कोटा, इस्तेमाल, और गड़बड़ियां देखी जा सकती हैं:

  1. Google Cloud कंसोल पर जाएं.
  2. एपीआई और सेवाएं को चुनें.
  3. टेबल की सूची में से, Firebase Cloud Messaging API चुनें.
  4. कोटा और सिस्टम की सीमाएं को चुनें.

कोटा बढ़ाने का अनुरोध करना

कोटा बढ़ाने का अनुरोध करने से पहले, पक्का करें कि:

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

इन शर्तों को पूरा करने के बाद, Google Cloud Console में जाकर कोटा बढ़ाने का अनुरोध सबमिट किया जा सकता है. इसके लिए, यहां दिए गए तरीके अपनाएं:

  1. कोटा और सिस्टम की सीमाएं पर जाएं.
  2. टेबल में जाकर, हर मिनट में भेजे जाने वाले अनुरोधों की संख्या वाली लाइन को चुनें.
  3. बदलाव करें बटन पर क्लिक करें.
  4. अनुरोध करने के लिए, निर्देशों का पालन करें.

FCM अनुरोध को पूरा करने की पूरी कोशिश करेगा. हालांकि, हम इस बात की गारंटी नहीं दे सकते कि सीमा बढ़ाई जाएगी.

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

ज़्यादा जानने के लिए, FCM कोटा देखें.

विषय के हिसाब से मैसेज भेजने की सीमाएं और फ़ैनआउट थ्रॉटलिंग

ज़्यादा जानकारी के लिए, विषय के हिसाब से मैसेज भेजने के कोटे और सीमाएं देखें.

मैसेज थ्रॉटलिंग को छोटा किया जा सकता है

छोटे किए जा सकने वाले मैसेज में बताए गए तरीके के मुताबिक, छोटे किए जा सकने वाले मैसेज ऐसी सूचनाएं होती हैं जिनमें कोई कॉन्टेंट नहीं होता. इन्हें एक-दूसरे के ऊपर छोटा करके दिखाया जाता है. अगर कोई डेवलपर किसी ऐप्लिकेशन को एक ही मैसेज बार-बार भेजता है, तो हम मैसेज भेजने में देरी करते हैं. इससे, उपयोगकर्ता के डिवाइस की बैटरी पर पड़ने वाले असर को कम किया जा सकता है.

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

अगर आपको एक साथ कई सूचनाएं भेजनी हैं, तो हो सकता है कि नॉन-कोलैप्स होने वाले मैसेज आपके लिए सही विकल्प हों. ऐसे मैसेज के लिए, यह पक्का करें कि उनमें कॉन्टेंट शामिल हो, ताकि बैटरी की खपत कम हो.

हम हर ऐप्लिकेशन के लिए, हर डिवाइस पर ज़्यादा से ज़्यादा 20 छोटे किए जा सकने वाले मैसेज भेज सकते हैं. इसके बाद, हर तीन मिनट में एक मैसेज भेजा जा सकता है.

किसी एक डिवाइस पर मैसेज भेजने की ज़्यादा से ज़्यादा दर

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

iOS के लिए, जब दर APNs की सीमाओं से ज़्यादा हो जाती है, तो हम गड़बड़ी का मैसेज दिखाते हैं.