Limitações e cotas do FCM

Nosso objetivo é sempre entregar todas as mensagens enviadas pelo FCM. No entanto, entregar cada uma delas nem sempre resulta em uma boa experiência para o usuário. Em outros casos, precisamos fornecer limites para garantir que o FCM proporcione um serviço escalonável para todos os remetentes. Os tipos de limites e cotas descritos nesta seção nos ajudará a equilibrar esses importantes fatores.

Como limitar mensagens downstream

A API HTTP v1 introduziu cotas por projeto e por minuto para troca de mensagens downstream. A cota padrão de 600 mil mensagens por minuto abrange mais de 99% dos desenvolvedores do FCM e protege a estabilidade do sistema e minimiza o impacto de projetos com picos.

Padrões de tráfego com picos podem resultar em erros por exceder a cota. Em um cenário de excesso de cota, o sistema envia o código de status HTTP 429 (QUOTA_EXCEEDED) até que a cota seja restaurada no minuto seguinte. Respostas 429 também podem ser devolvidas em situações de sobrecarga. Por isso, é altamente recomendável processar os códigos 429 de acordo com as recomendações publicadas.

Algumas considerações:

  • A cota downstream mede mensagens, não solicitações.
  • Os erros do cliente (código de status HTTP 400-499) são contabilizados (exceto o 429).
  • As cotas são por minuto, mas esses minutos não são alinhados ao relógio.

Como monitorar a cota

Você pode ver a cota, o uso e os erros no console do Google Cloud:

  1. Acesse o console do Google Cloud
  2. Selecione APIs e serviços
  3. Na lista de tabelas, selecione API Firebase Cloud Messaging
  4. Selecione QUOTA & SYSTEM LIMITS.

OBSERVAÇÃO: esses gráficos não estão alinhados com precisão ao tempo de minutos de cota, o que significa que erros 429 podem ser exibidos quando o tráfego parece estar abaixo da cota.

Solicitar aumento de cota

Antes de solicitar um aumento de cota, verifique se:

  • Seu uso é regularmente ≥ 80% da cota por pelo menos 5 minutos consecutivos por dia.
  • Você tem uma taxa de erro do cliente menor que 5%, especialmente durante o pico de tráfego.
  • Você segue as práticas recomendadas para enviar mensagens em grande escala.

Se você atender a esses critérios, poderá enviar uma solicitação de aumento de cota de até +25% e o FCM fará o possível para atender à solicitação (nenhum aumento pode ser garantido).

Se você precisar de uma cota maior de mensagens downstream devido a um lançamento iminente ou um evento temporário, solicite o aumento da cota com pelo menos 15 dias de antecedência para permitir que haja tempo suficiente para lidar com a solicitação. Para solicitações grandes (>18 milhões de mensagens por minuto), o aviso precisa ser enviado com pelo menos 30 dias de antecedência. Os lançamentos e as solicitações de eventos especiais ainda ficam sujeitos à taxa de erro do cliente e aos requisitos de práticas recomendadas.

Consulte também as perguntas frequentes sobre cotas de FCM.

Limite de mensagem do tópico

A taxa de adição ou remoção de assinatura do tópico é limitada a 3.000 QPS por projeto.

Para taxas de envio de mensagens, consulte Limitação de Fanout.

Limitação de Fanout

O fanout de mensagens é o processo de enviar uma mensagem para vários dispositivos, como quando se segmenta tópicos e grupos ou usa o Editor do Notificações para públicos-alvo ou segmentos de usuários.

O fanout das mensagens não é instantâneo e, de vez em quando, poderão ocorrer várias fanouts em andamento ao mesmo tempo. Limitamos o número de fanouts de mensagens simultâneas por projeto a 1.000. Depois disso, poderemos rejeitar novas solicitações de fanout ou adiar o fanout das solicitações até que alguns dos fanouts em andamento sejam concluídos.

A taxa de fanout real conquistada é influenciada pelo número de projetos que solicitam fanouts ao mesmo tempo. Uma taxa de fanout de 10.000 QPS para um projeto individual não é incomum, mas esse número não é uma garantia. Ele é um resultado da carga total no sistema. A capacidade de fanout disponível é dividida entre os projetos e não entre as solicitações de fanout. Portanto, se o projeto tiver dois fanouts em andamento, cada um verá apenas metade da taxa de fanout disponível. A maneira recomendada de maximizar a velocidade de fanout é ter apenas um fanout ativo em andamento por vez.

Limitação de mensagens recolhíveis

Conforme descrito em Mensagens recolhíveis, as mensagens recolhíveis são notificações sem conteúdo projetadas para se sobrepor umas às outras. Caso um desenvolvedor repita a mesma mensagem para um aplicativo com muita frequência, adiaremos as mensagens (limitaremos) para reduzir o impacto na bateria de um usuário.

Por exemplo, se você enviar um grande número de novas solicitações de sincronização de e-mail para um único dispositivo, poderemos adiar a próxima solicitação de sincronização de e-mail por alguns minutos para que o dispositivo possa ser sincronizado com uma taxa média mais baixa. Essa limitação é realizada estritamente para limitar o impacto da bateria presenciado pelo usuário.

Se o caso de uso exigir altos padrões de envio, as mensagens não recolhíveis podem ser a escolha certa. Para essas mensagens, inclua o conteúdo delas para reduzir o custo da bateria.

Limitamos mensagens recolhíveis a uma alta taxa de 20 mensagens por aplicativo por dispositivo, com um novo envio de 1 mensagem a cada 3 minutos.

Taxa máxima de mensagens para um único dispositivo

No Android, é possível enviar até 240 mensagens/minuto e 5.000 mensagens/hora para um único dispositivo. O objetivo desse alto limite é permitir aumentos de tráfego em curto prazo, como quando os usuários estão interagindo rapidamente no chat. Esse limite evita que erros na lógica de envio esgotem sem querer a bateria de um dispositivo.

No iOS, um erro é retornado quando a taxa excede os limites dos APNs.