FCM Throttling و سهمیه ها

هدف ما این است که همیشه هر پیامی را که با استفاده از FCM ارسال می شود، ارائه دهیم. با این حال، ارائه هر پیام گاهی اوقات منجر به تجربه کلی ضعیف کاربر می شود. در موارد دیگر، ما باید مرزهایی را برای اطمینان از اینکه FCM یک سرویس مقیاس پذیر برای همه فرستنده ها ارائه می دهد، فراهم کنیم. انواع محدودیت ها و سهمیه های شرح داده شده در این بخش به ما کمک می کند تا این عوامل مهم را متعادل کنیم.

کاهش فشار پیام پایین دست

HTTP v1 API سهمیه‌های هر پروژه و در دقیقه را برای پیام‌رسانی پایین دستی معرفی کرد. سهمیه پیش‌فرض 600 هزار پیام در دقیقه، بیش از 99 درصد از توسعه‌دهندگان FCM پوشش می‌دهد و در عین حال از پایداری سیستم محافظت می‌کند و تأثیر پروژه‌های spiky را به حداقل می‌رساند.

الگوهای ترافیک تیره می تواند منجر به خطاهای بیش از حد سهمیه شود. در یک سناریوی بیش از سهمیه، سیستم کد وضعیت HTTP 429 RESOURCE_EXHAUSTED ("QUOTA_EXCEEDED") را تا زمانی که سهمیه در دقیقه بعد دوباره پر شود، ارائه می دهد. 429 پاسخ نیز ممکن است در موقعیت‌های اضافه بار برگردانده شوند، بنابراین شما قویاً تشویق می‌شوید که 429 را طبق توصیه‌های منتشر شده مدیریت کنید.

به خاطر داشته باشید:

  • سهمیه پایین دستی پیام ها را اندازه گیری می کند نه درخواست ها.
  • خطاهای مشتری (کد وضعیت HTTP 400-499) شمارش می شود (به استثنای 429s).
  • سهمیه ها در هر دقیقه است، اما این دقیقه ها با ساعت هماهنگ نیستند.

سهمیه نظارت

با استفاده از موارد زیر می‌توانید سهمیه، استفاده و خطاها را در Google Cloud Console مشاهده کنید:

  1. به کنسول Google Cloud بروید.
  2. APIs & services را انتخاب کنید.
  3. از لیست جدول، Firebase Cloud Messaging API را انتخاب کنید.
  4. QUOTA & SYSTEM LIMITS را انتخاب کنید.

درخواست افزایش سهمیه

قبل از درخواست افزایش سهمیه، اطمینان حاصل کنید که:

  • استفاده شما به طور منظم ≥ 80% سهمیه حداقل برای 5 دقیقه متوالی در روز است.
  • نسبت خطای مشتری کمتر از 5٪ است، به خصوص در زمان اوج ترافیک.
  • شما به بهترین شیوه ها برای ارسال پیام در مقیاس پایبند هستید.

اگر این معیارها را داشته باشید، می توانید درخواست افزایش سهمیه تا 25% را ارسال کنید و FCM تمام تلاش عملی خود را برای انجام این درخواست انجام خواهد داد (هیچ افزایشی تضمین نمی شود).

اگر به دلیل راه‌اندازی قریب‌الوقوع یا رویداد موقتی به سهمیه پیام‌رسانی پایین‌دست بیشتری نیاز دارید، حداقل 15 روز قبل سهمیه خود را درخواست کنید تا زمان کافی برای رسیدگی به درخواست در نظر گرفته شود. برای درخواست های بزرگ (بیش از 18 میلیون پیام در دقیقه)، حداقل 30 روز اطلاع رسانی لازم است. راه‌اندازی‌ها و درخواست‌های رویداد ویژه همچنان تابع نسبت خطای مشتری و الزامات بهترین شیوه‌ها هستند.

برای کسب اطلاعات بیشتر، سهمیه های FCM را ببینید.

محدودیت‌های پیام موضوعی و کاهش فشار

برای جزئیات بیشتر به سهمیه ها و محدودیت های پیام رسانی موضوع مراجعه کنید.

خفه کردن پیام تاشو

همانطور که در پیام‌های تاشو توضیح داده شد، پیام‌های جمع‌شونده اعلان‌هایی بدون محتوا هستند که برای جمع شدن روی یکدیگر طراحی شده‌اند. در صورتی که یک برنامه‌نویس به طور مکرر همان پیام را برای یک برنامه تکرار کند، پیام‌ها را به تأخیر می‌اندازیم تا تأثیر آن بر باتری کاربر کاهش یابد.

برای مثال، اگر تعداد زیادی درخواست همگام‌سازی ایمیل جدید را به یک دستگاه ارسال کنید، ممکن است درخواست همگام‌سازی ایمیل بعدی را چند دقیقه به تأخیر بیندازیم تا دستگاه بتواند با سرعت متوسط ​​پایین‌تری همگام‌سازی شود. این دریچه گاز به شدت برای محدود کردن تاثیر باتری تجربه شده توسط کاربر انجام می شود.

اگر مورد استفاده شما به الگوهای ارسال پشت سر هم زیاد نیاز دارد، پیام های غیرقابل جمع شدن ممکن است انتخاب مناسبی باشند. برای چنین پیام‌هایی، حتماً محتوا را در چنین پیام‌هایی قرار دهید تا هزینه باتری کاهش یابد.

ما پیام‌های جمع‌شونده را به 20 پیام در هر برنامه در هر دستگاه محدود می‌کنیم و هر 3 دقیقه یک پیام را دوباره پر می‌کنیم.

حداکثر نرخ پیام به یک دستگاه

برای اندروید می‌توانید تا ۲۴۰ پیام در دقیقه و ۵۰۰۰ پیام در ساعت به یک دستگاه ارسال کنید. این آستانه بالا به این منظور است که امکان انبوه ترافیک کوتاه مدت را فراهم می کند، مانند زمانی که کاربران به سرعت از طریق چت در حال تعامل هستند. این محدودیت از تخلیه ناخواسته باتری روی دستگاه خطا در ارسال منطق جلوگیری می کند.

برای iOS، زمانی که نرخ از محدودیت‌های APN فراتر رود، خطا را برمی‌گردانیم.