Limitation et quotas FCM

Notre objectif est de toujours distribuer tous les messages envoyés à l'aide de FCM. Toutefois, l'envoi de chaque message peut parfois entraîner une mauvaise expérience utilisateur globale. Dans d'autres cas, nous devons définir des limites pour nous assurer que FCM fournit un service évolutif à tous les expéditeurs. Les types de limites et de quotas décrits dans cette section nous aident à équilibrer ces facteurs importants.

Limitation du nombre de messages en aval

L'API HTTP v1 a introduit des quotas par projet et par minute pour la messagerie en aval. Le quota par défaut de 600 000 messages par minute couvre plus de 99 % des développeurs FCM, tout en protégeant la stabilité du système et en minimisant l'impact des projets avec des pics d'utilisation.

Les pics de trafic peuvent entraîner des erreurs de dépassement de quota. En cas de dépassement du quota, le système diffuse le code d'état HTTP 429 (QUOTA_EXCEEDED) jusqu'à ce que le quota soit rechargé la minute suivante. Des réponses 429 peuvent également être renvoyées en cas de surcharge. Nous vous recommandons donc vivement de les gérer conformément aux recommandations publiées.

Remarques :

  • Le quota en aval mesure les messages, et non les requêtes.
  • Les erreurs client (codes d'état HTTP 400 à 499) sont comptabilisées (à l'exception des erreurs 429).
  • Les quotas sont définis à la minute, mais ces minutes ne sont pas alignées sur l'heure.

Quota de surveillance

Vous pouvez consulter les quotas, l'utilisation et les erreurs dans la console Google Cloud :

  1. Accéder à la console Google Cloud
  2. Sélectionnez API et services.
  3. Dans la liste des tables, sélectionnez API Firebase Cloud Messaging.
  4. Sélectionnez QUOTAS ET LIMITES DU SYSTÈME.

REMARQUE : Ces graphiques ne sont pas précisément alignés sur les minutes de quota. Cela signifie que des erreurs 429 peuvent être générées lorsque le trafic semble être inférieur au quota.

Demander une augmentation du quota

Avant de demander une augmentation de quota, assurez-vous que :

  • Votre utilisation est régulièrement supérieure ou égale à 80 % du quota pendant au moins cinq minutes consécutives par jour.
  • Votre taux d'erreurs client est inférieur à 5 %, en particulier lors des pics de trafic.
  • Vous respectez les bonnes pratiques pour l'envoi de messages à grande échelle.

Si vous remplissez ces critères, vous pouvez demander une augmentation de quota de 25 % maximum. FCM fera tout son possible pour répondre à votre demande (aucune augmentation ne peut être garantie).

Si vous avez besoin d'un quota de messages en aval plus important en raison d'un lancement imminent ou d'un événement temporaire, demandez votre quota au moins 15 jours à l'avance pour nous laisser suffisamment de temps pour traiter votre demande. Pour les demandes importantes (> 18 millions de messages par minute), un préavis d'au moins 30 jours est requis. Les demandes de lancement et d'événements spéciaux restent soumises aux exigences concernant le ratio d'erreurs client et les bonnes pratiques.

Consultez également les questions fréquentes sur les quotas FCM.

Limite de messages par sujet

Le taux d'ajout ou de suppression d'abonnements à des thèmes est limité à 3 000 RPS par projet.

Pour connaître les taux d'envoi de messages, consultez Limitation du nombre de messages envoyés.

Limitation de la distribution ramifiée

La diffusion de messages est le processus d'envoi d'un message à plusieurs appareils, par exemple lorsque vous ciblez des thèmes et des groupes, ou lorsque vous utilisez le composeur de notifications pour cibler des audiences ou des segments d'utilisateurs.

La diffusion des messages n'est pas instantanée. Il arrive donc que plusieurs diffusions soient en cours simultanément. Nous limitons le nombre de diffusions de messages simultanées par projet à 1 000. Après cela, nous pouvons rejeter les demandes de diffusion supplémentaires ou différer la diffusion des demandes jusqu'à ce que certaines des diffusions déjà en cours soient terminées.

Le taux de diffusion réel réalisable est influencé par le nombre de projets demandant des diffusions en même temps. Il n'est pas rare d'observer un taux de distribution de 10 000 RPS pour un projet individuel, mais ce nombre n'est pas garanti et dépend de la charge totale du système. Il est important de noter que la capacité de diffusion disponible est répartie entre les projets et non entre les demandes de diffusion. Par conséquent, si deux fan-outs sont en cours dans votre projet, chacun d'eux ne verra que la moitié du taux de fan-out disponible. Pour maximiser la vitesse de diffusion, nous vous recommandons de n'avoir qu'une seule diffusion active à la fois.

Limitation des messages réductibles

Comme décrit dans Messages réductibles, les messages réductibles sont des notifications sans contenu conçues pour se réduire les unes sur les autres. Si un développeur répète le même message trop souvent dans une application, nous retardons (limitons) les messages pour réduire l'impact sur la batterie de l'utilisateur.

Par exemple, si vous envoyez un grand nombre de nouvelles demandes de synchronisation d'e-mails à un même appareil, nous pouvons retarder la prochaine demande de synchronisation d'e-mails de quelques minutes afin que l'appareil puisse se synchroniser à un taux moyen plus faible. Cette limitation est effectuée uniquement pour limiter l'impact sur la batterie pour l'utilisateur.

Si votre cas d'utilisation nécessite des schémas d'envoi par rafales élevés, les messages non réductibles peuvent être le bon choix. Pour ces messages, veillez à inclure le contenu afin de réduire l'impact sur la batterie.

Nous limitons les messages réductibles à une rafale de 20 messages par application et par appareil, avec un réapprovisionnement d'un message toutes les trois minutes.

Taux de messages maximal vers un seul appareil

Sur Android, vous pouvez envoyer jusqu'à 240 messages par minute et 5 000 messages par heure à un seul appareil. Ce seuil élevé est destiné à permettre des pics de trafic à court terme, par exemple lorsque les utilisateurs interagissent rapidement dans un chat. Cette limite empêche les erreurs dans la logique d'envoi de décharger la batterie d'un appareil par inadvertance.

Pour iOS, nous renvoyons une erreur lorsque le taux dépasse les limites APNs.