Limitazione e quote di FCM

Il nostro obiettivo è fornire sempre tutti i messaggi inviati utilizzando FCM. Tuttavia, la pubblicazione di ogni messaggio a volte comporta un'esperienza utente complessiva scadente. In altri casi, dobbiamo fornire dei limiti per garantire che FCM fornisca un servizio scalabile per tutti i mittenti. I tipi di limiti e quote descritti in questa sezione ci aiutano a bilanciare questi fattori importanti.

Limitazione dei messaggi downstream

L'API HTTP v1 ha introdotto quote per progetto e al minuto per la messaggistica downstream. La quota predefinita di 600.000 messaggi al minuto copre oltre il 99% degli sviluppatori di FCM, proteggendo al contempo la stabilità del sistema e riducendo al minimo l'impatto dei progetti con picchi.

Pattern di traffico irregolari possono causare errori di superamento quota. In uno scenario di superamento della quota, il sistema restituisce il codice di stato HTTP 429 (QUOTA_EXCEEDED) fino al ripristino della quota nel minuto successivo. Le risposte 429 possono essere restituite anche in situazioni di sovraccarico, pertanto ti consigliamo vivamente di gestirle in base ai suggerimenti pubblicati.

Ricorda:

  • La quota downstream misura i messaggi, non le richieste.
  • Gli errori client (codice di stato HTTP 400-499) vengono conteggiati (esclusi i codici 429).
  • Le quote sono al minuto, ma questi minuti non sono allineati all'orologio.

Monitoraggio della quota

Puoi visualizzare quota, utilizzo ed errori su Google Cloud Console:

  1. Vai alla console Google Cloud
  2. Seleziona API e servizi.
  3. Dall'elenco delle tabelle, seleziona API Firebase Cloud Messaging.
  4. Seleziona QUOTA E LIMITI DI SISTEMA.

NOTA: questi grafici non sono allineati con precisione nel tempo ai minuti di quota, il che significa che potrebbero essere restituiti errori 429 quando il traffico sembra essere al di sotto della quota.

Richiedi un aumento della quota

Prima di richiedere un aumento della quota, assicurati che:

  • Il tuo utilizzo è regolarmente ≥ 80% della quota per almeno 5 minuti consecutivi al giorno.
  • Il rapporto di errori del client è inferiore al 5%, soprattutto durante il picco di traffico.
  • Rispetta le best practice per l'invio di messaggi su larga scala.

Se soddisfi questi criteri, puoi inviare una richiesta di aumento della quota fino a un massimo del +25% e FCM farà ogni sforzo pratico per soddisfare la richiesta (nessun aumento può essere garantito).

Se hai bisogno di una quota di messaggistica downstream maggiore a causa di un lancio imminente o di un evento temporaneo, richiedi la quota almeno 15 giorni prima per consentire un tempo sufficiente per gestire la richiesta. Per le richieste di grandi dimensioni (> 18 milioni di messaggi al minuto), è necessario un preavviso di almeno 30 giorni. Le richieste di lancio ed eventi speciali sono comunque soggette al rapporto di errori del client e ai requisiti delle best practice.

Consulta anche le domande frequenti sulle quote di FCM.

Limite di messaggi dell'argomento

La velocità di aggiunta o rimozione delle sottoscrizioni agli argomenti è limitata a 3000 QPS per progetto.

Per le tariffe di invio dei messaggi, consulta Limitazione del fanout.

Limitazione del fanout

La distribuzione dei messaggi è il processo di invio di un messaggio a più dispositivi, ad esempio quando scegli come target argomenti e gruppi o quando utilizzi lo strumento di composizione delle notifiche per scegliere come target segmenti di utenti o pubblici.

La distribuzione dei messaggi non è istantanea, quindi a volte sono in corso più distribuzioni contemporaneamente. Il numero di fanout di messaggi simultanei per progetto è limitato a 1000. Dopodiché, potremmo rifiutare ulteriori richieste di fanout o posticipare il fanout delle richieste fino al completamento di alcuni fanout già in corso.

Il tasso di fanout effettivamente raggiungibile è influenzato dal numero di progetti che richiedono fanout contemporaneamente. Una frequenza di fanout di 10.000 QPS per un singolo progetto non è insolita, ma questo numero non è una garanzia ed è il risultato del carico totale sul sistema. È importante notare che la capacità di fanout disponibile è suddivisa tra i progetti e non tra le richieste di fanout. Pertanto, se il tuo progetto ha due fanout in corso, ogni fanout vedrà solo la metà della velocità di fanout disponibile. Il modo consigliato per massimizzare la velocità di fanout è avere una sola distribuzione attiva alla volta.

Limitazione dei messaggi comprimibili

Come descritto in Messaggi comprimibili, i messaggi comprimibili sono notifiche senza contenuti progettate per comprimersi una sull'altra. Nel caso in cui uno sviluppatore ripeta lo stesso messaggio a un'app troppo spesso, ritardiamo (limitiamo) i messaggi per ridurre l'impatto sulla batteria di un utente.

Ad esempio, se invii un numero elevato di nuove richieste di sincronizzazione delle email a un singolo dispositivo, potremmo ritardare la successiva richiesta di sincronizzazione delle email di alcuni minuti in modo che il dispositivo possa sincronizzarsi a una velocità media inferiore. Questa limitazione viene eseguita rigorosamente per limitare l'impatto sulla batteria riscontrato dall'utente.

Se il tuo caso d'uso richiede pattern di invio di burst elevati, i messaggi non comprimibili potrebbero essere la scelta giusta. Per questi messaggi, assicurati di includere il contenuto per ridurre il consumo della batteria.

Limitiamo i messaggi comprimibili a una raffica di 20 messaggi per app per dispositivo, con un reintegro di 1 messaggio ogni 3 minuti.

Frequenza massima dei messaggi a un singolo dispositivo

Per Android, puoi inviare fino a 240 messaggi al minuto e 5000 messaggi all'ora a un singolo dispositivo. Questa soglia elevata è pensata per consentire picchi di traffico a breve termine, ad esempio quando gli utenti interagiscono rapidamente tramite chat. Questo limite impedisce che la batteria di un dispositivo si scarichi inavvertitamente a causa di errori nella logica di invio.

Per iOS, restituiamo un errore quando la frequenza supera i limiti APN.