ויסות נתונים (throttle) ומכסות ב-FCM

המטרה שלנו היא תמיד למסור כל הודעה שנשלחת באמצעות FCM. עם זאת, הצגת כל ההודעות עלולה לפעמים לפגוע בחוויית המשתמש הכוללת. במקרים אחרים, אנחנו צריכים להגדיר גבולות כדי לוודא ש-FCM מספק שירות שניתן להתאמה לכל השולחים. סוגי המגבלות והמכסות שמתוארים בקטע הזה עוזרים לנו לאזן בין הגורמים החשובים האלה.

הגבלת קצב העברת ההודעות במורד הזרם

ב-HTTP v1 API הוגדרו מכסות לכל פרויקט ולכל דקה להעברת הודעות במורד הזרם. מכסת ברירת המחדל של 600,000 הודעות לדקה מספיקה ליותר מ-99% ממפתחי FCM, תוך שמירה על יציבות המערכת וצמצום ההשפעה של פרויקטים עם עומס נקודתי.

דפוסי תנועה לא סדירים יכולים לגרום לשגיאות שקשורות לחריגה מהמכסה. אם חורגים מהמכסה, המערכת מחזירה את קוד הסטטוס 429 RESOURCE_EXHAUSTED (QUOTA_EXCEEDED) של HTTP עד שהמכסה מתמלאת מחדש בדקה הבאה. תגובות 429 עשויות לחזור גם במצבים של עומס יתר, לכן מומלץ מאוד לטפל בתגובות 429 בהתאם להמלצות שפורסמו.

חשוב לזכור:

  • המכסה במורד הזרם מודדת הודעות, לא בקשות.
  • שגיאות לקוח (קוד סטטוס של HTTP‏ 400-499) נספרות (לא כולל 429).
  • המכסות הן לדקה, אבל הדקות האלה לא מסונכרנות עם השעון.

מכסת המעקב

אפשר לראות את המכסות, השימוש והשגיאות במסוף Google Cloud:

  1. נכנסים למסוף Google Cloud.

  2. לוחצים על APIs & Services.

  3. ברשימת הטבלאות, בוחרים באפשרות Firebase Cloud Messaging API.

  4. לוחצים על QUOTA & SYSTEM LIMITS.

שליחת בקשה להגדלת המכסה

לפני ששולחים בקשה להגדלת המכסה, חשוב לוודא:

  • השימוש שלכם הוא באופן קבוע ≥ 80% מהמכסה במשך 5 דקות רצופות לפחות ביום.
  • שיעור השגיאות בצד הלקוח נמוך מ-5%, במיוחד בזמני שיא של תנועה.
  • אתם פועלים לפי השיטות המומלצות לשליחת הודעות בהיקף גדול.

אם אתם עומדים בקריטריונים האלה, אתם יכולים לשלוח בקשה להגדלת המכסה עד 25% במסוף Google Cloud, באמצעות:

  1. נכנסים לדף QUOTA & SYSTEM LIMITS.
  2. בטבלה, בוחרים בשורה Send requests per minute.
  3. לוחצים על הכפתור עריכה.
  4. פועלים לפי ההוראות כדי לשלוח את הבקשה.

‫FCM יעשה כל מאמץ למלא את הבקשה (לא ניתן להבטיח הגדלה).

אם אתם צריכים מכסה גדולה יותר של הודעות במורד הזרם בגלל השקה קרובה או אירוע זמני, אתם צריכים לשלוח בקשה להגדלת המכסה דרך התמיכה של Firebase. כדי שיהיה מספיק זמן לטפל בבקשה, שלחו אותה לפחות 15 ימים מראש. אם מדובר בבקשות גדולות (יותר מ-18 מיליון הודעות בדקה), צריך להודיע לפחות 30 יום מראש. אנחנו יכולים לאשר רק 2 אירועים של מכסות זמניות בשנה. המשך הכולל של המכסה הזמנית לאורך השנה לא יכול להיות יותר מ-30 ימים. השקות ובקשות לאירועים מיוחדים עדיין כפופות לדרישות לגבי שיעור השגיאות בצד הלקוח ולשיטות המומלצות.

מידע נוסף זמין במאמר מכסות ב-FCM.

מגבלות על הודעות בנושאים והגבלת קצב של הפצה

למידע נוסף, ראו מכסות ומגבלות של העברת הודעות לפי נושא.

ויסות קצב של הודעות שניתן לכווץ

כפי שמתואר בקטע הודעות שניתן לכווץ, הודעות שניתן לכווץ הן התראות ללא תוכן שנועדו להתכווץ זו על גבי זו. אם מפתח חוזר על אותה הודעה לאפליקציה בתדירות גבוהה מדי, אנחנו מעכבים את ההודעות כדי להפחית את ההשפעה על הסוללה של המשתמש.

לדוגמה, אם אתם שולחים מספר גדול של בקשות חדשות לסנכרון אימייל למכשיר אחד, יכול להיות שנעכב את הבקשה הבאה לסנכרון אימייל בכמה דקות כדי שהמכשיר יוכל להסתנכרן בקצב ממוצע נמוך יותר. ההגבלה הזו נועדה אך ורק כדי לצמצם את ההשפעה על הסוללה של המשתמש.

אם תרחיש השימוש שלכם דורש דפוסי שליחה של פרצים גבוהים, יכול להיות שהודעות שלא ניתנות לכיווץ הן הבחירה הנכונה. בהודעות כאלה, חשוב לכלול את התוכן בהודעות כדי להפחית את צריכת הסוללה.

אנחנו מגבילים את ההודעות שניתן לכווץ ל-20 הודעות בבת אחת לכל אפליקציה בכל מכשיר, עם אפשרות להוסיף הודעה אחת כל 3 דקות.

קצב ההודעות המקסימלי למכשיר אחד

ב-Android, אפשר לשלוח עד 240 הודעות בדקה ו-5,000 הודעות בשעה למכשיר אחד. הסף הגבוה הזה נועד לאפשר פרצי תנועה קצרים, למשל כשמשתמשים מתקשרים במהירות בצ'אט. המגבלה הזו מונעת שגיאות בלוגיקת השליחה, שעלולות לרוקן את הסוללה במכשיר בטעות.

ב-iOS, אנחנו מחזירים שגיאה כשהקצב חורג מהמגבלות של APNs.