Limitación y cuotas de FCM

Nuestro objetivo es entregar siempre cada mensaje que se envía con FCM. Sin embargo, cuando se entregan todos los mensajes, en ocasiones se genera una experiencia general deficiente para el usuario. En otros casos, debemos definir límites a fin de garantizar que FCM proporcione un servicio escalable para todos los remitentes. Los tipos de límites y cuotas descritos en esta sección nos ayudarán a equilibrar estos factores importantes.

Regulación de mensajes downstream

La API de HTTP v1 introdujo cuotas por proyecto y por minuto para la mensajería downstream. La cuota predeterminada de 600,000 mensajes por minuto abarca a más del 99% de los desarrolladores de FCM y, al mismo tiempo, protege la estabilidad del sistema y minimiza el impacto de los proyectos con aumentos bruscos.

Los patrones de tráfico con aumentos bruscos pueden generar errores de superación de la cuota. En una situación en la que se supera la cuota, el sistema entrega el código de estado HTTP 429 (QUOTA_EXCEEDED) hasta que se restablece la cuota en el siguiente minuto. También se pueden devolver 429 respuestas en situaciones de sobrecarga, por lo que se recomienda controlar los errores 429 de acuerdo con las recomendaciones publicadas.

Ten en cuenta lo siguiente:

  • La cuota downstream mide los mensajes, no las solicitudes.
  • Se cuentan los errores de cliente (código de estado HTTP 400-499) (excepto los errores 429).
  • Las cuotas son por minuto, pero estos minutos no se alinean con la hora.

Supervisa la cuota

Puedes ver la cuota, el uso y los errores en la consola de Google Cloud:

  1. Ir a la consola de Google Cloud
  2. Selecciona APIs y servicios
  3. En la lista de tablas, selecciona API de Firebase Cloud Messaging
  4. Selecciona CUOTAS Y LÍMITES DEL SISTEMA.

NOTA: Estos gráficos no están alineados con precisión con los minutos de cuota, lo que significa que se pueden entregar errores 429 cuando el tráfico parece estar por debajo de la cuota.

Solicita un aumento de la cuota

Antes de solicitar un aumento de la cuota, asegúrate de lo siguiente:

  • Tu uso suele ser mayor o igual al 80% de la cuota durante al menos 5 minutos consecutivos por día.
  • Tienes menos del 5% de proporción de errores de cliente, especialmente durante los períodos de tráfico máximo
  • Sigues las prácticas recomendadas para enviar mensajes a gran escala.

Si cumples con estos criterios, puedes enviar una solicitud de aumento de cuota de hasta un 25%, y FCM hará todo lo posible para completar la solicitud (no se puede garantizar un aumento).

Si necesitas más cuota de mensajería downstream debido a un lanzamiento inminente o un evento temporal, solicita tu cuota con al menos 15 días de anticipación para permitir que haya tiempo suficiente para procesar la solicitud. Para las solicitudes grandes (más de 18 millones de mensajes por minuto), se requiere un aviso de al menos 30 días. Los lanzamientos y las solicitudes de eventos especiales aún están sujetos a la proporción de errores de cliente y a los requisitos de las prácticas recomendadas.

Consulta también las preguntas frecuentes sobre las cuotas de FCM.

Límite de los mensajes por temas

La tasa de adición/eliminación de suscripciones a temas se limita a 3,000 QPS por proyecto.

Consulta Regulación de la distribución para obtener información sobre las tasas de envío de mensajes.

Regulación de la distribución

La distribución de mensajes es el proceso de enviar mensajes a varios dispositivos, como cuando te orientas a temas y grupos, o usas el Compositor de Notifications para orientarte a públicos o segmentos de usuarios.

La distribución de mensajes no es una acción instantánea y rara vez habrá varias en curso simultáneamente. Limitamos a 1,000 la cantidad de distribuciones de mensajes simultáneas por proyecto. Cuando se alcance ese límite, es posible que rechacemos las solicitudes de distribución adicionales o aplacemos la distribución de las solicitudes hasta que se completen algunas que ya estén en curso.

La tasa real alcanzable de distribución varía según la cantidad de proyectos que soliciten distribuciones al mismo tiempo. No es inusual ver una tasa de distribución de 10,000 QPS en un proyecto individual, pero esa cantidad no se garantiza y proviene de la carga total del sistema. Cabe destacar que la capacidad de distribución disponible se divide entre los proyectos y no entre las solicitudes de distribución. Por lo tanto, si un proyecto tiene dos distribuciones en curso, cada una de estas solo podrá acceder a la mitad de la tasa de distribución disponible. Para maximizar la velocidad de distribución, se recomienda tener solo una distribución activa a la vez.

Regulación de mensajes contraíbles

Como se describió en Mensajes contraíbles, los mensajes contraíbles son notificaciones sin contenido diseñadas para contraerse una sobre otra. Si un desarrollador envía el mismo mensaje hacia una app con demasiada frecuencia, retrasaremos (limitaremos) los mensajes a fin de disminuir el impacto sobre la batería del usuario.

Por ejemplo, si envías una gran cantidad de solicitudes de sincronización de correo electrónico nuevo a un solo dispositivo, es posible que retrasemos la siguiente solicitud unos minutos para que el dispositivo se pueda sincronizar a una tasa promedio más baja. La regulación se realiza exclusivamente para limitar el impacto sobre la batería del usuario.

Los mensajes no contraíbles pueden ser la opción adecuada si tu caso de uso requiere patrones de envío con aumentos de actividad elevados. Para tales mensajes, asegúrate de incluir el contenido en estos a fin de disminuir el consumo de batería.

Los mensajes contraíbles se limitan a picos de actividad de 20 mensajes por app y por dispositivo, con una reposición de 1 mensaje cada 3 minutos.

Tasa máxima de envío de mensajes a un solo dispositivo

En Android, puedes enviar hasta 240 mensajes por minuto y 5,000 mensajes por hora a un solo dispositivo. El propósito de este umbral alto es permitir que se produzcan aumentos de actividad de tráfico a corto plazo, como cuando los usuarios interactúan rápidamente por chat. Con este límite, se evita que se generen errores en los que la lógica de envío consume la batería de un dispositivo involuntariamente.

En iOS, se muestra un error cuando la tasa supera los límites de APNS.