Unser Ziel ist es, jede über FCM gesendete Nachricht zuzustellen. Die Zustellung jeder Nachricht führt jedoch manchmal zu einer schlechten Nutzererfahrung. In anderen Fällen müssen wir Grenzen setzen, damit FCM für alle Absender einen skalierbaren Dienst bereitstellen kann. Die in diesem Abschnitt beschriebenen Arten von Limits und Kontingenten helfen uns, diese wichtigen Faktoren in Einklang zu bringen.
Drosselung von Downstream-Nachrichten
Mit der HTTP v1 API wurden Kontingente pro Projekt und Minute für Downstream-Messaging eingeführt. Das Standardkontingent von 600.000 Nachrichten pro Minute deckt über 99% der FCM-Entwickler ab, schützt die Stabilität des Systems und minimiert die Auswirkungen von Projekten mit Spitzenlasten.
Spitzen im Traffic können zu Fehlern aufgrund von Kontingentüberschreitungen führen. Wenn das Kontingent überschritten wird, gibt das System den HTTP-Statuscode 429 RESOURCE_EXHAUSTED („QUOTA_EXCEEDED“) zurück, bis das Kontingent in der folgenden Minute wieder aufgefüllt wird. 429-Antworten können auch bei Überlastung zurückgegeben werden. Daher wird dringend empfohlen, 429-Antworten gemäß den veröffentlichten Empfehlungen zu verarbeiten.
Hinweise:
- Das Downstream-Kontingent misst Nachrichten, nicht Anfragen.
- Clientfehler (HTTP-Statuscode 400–499) werden gezählt (außer 429).
- Kontingente gelten pro Minute, aber diese Minuten sind nicht an die Uhrzeit gebunden.
Monitoring-Kontingent
Sie können Kontingente, Nutzung und Fehler in der Google Cloud-Konsole einsehen:
Rufen Sie die Google Cloud-Konsole auf.
Wählen Sie APIs und Dienste aus.
Wählen Sie in der Tabellenliste die Firebase Cloud Messaging API aus.
Wählen Sie KONTINGENTE UND SYSTEMLIMITS aus.
Kontingenterhöhung anfordern
Bevor Sie eine Kontingenterhöhung anfordern, müssen Sie Folgendes sicherstellen:
- Ihre Nutzung beträgt regelmäßig mindestens 5 aufeinanderfolgende Minuten pro Tag ≥ 80% des Kontingents.
- Die Clientfehlerrate liegt bei unter 5 %, insbesondere bei Spitzenlasten.
- Sie halten sich an die Best Practices für das Senden von Nachrichten in großem Umfang.
Wenn Sie diese Kriterien erfüllen, können Sie in der Google Cloud Console eine Kontingenterhöhung um bis zu 25% beantragen. Gehen Sie dazu so vor:
- Rufen Sie KONTINGENTE UND SYSTEMLIMITS auf.
- Wählen Sie in der Tabelle die Zeile Sendeanfragen pro Minute aus.
- Klicken Sie auf Bearbeiten.
- Folgen Sie der Anleitung, um Ihre Anfrage zu stellen.
FCM wird sich bemühen, die Anfrage zu erfüllen (eine Erhöhung kann nicht garantiert werden).
Wenn Sie aufgrund einer bevorstehenden Einführung oder eines vorübergehenden Ereignisses ein höheres Kontingent für Downstream-Nachrichten benötigen, müssen Sie eine Kontingenterhöhung über den Firebase-Support anfordern. Beantragen Sie Ihr Kontingent mindestens 15 Tage im Voraus, damit genügend Zeit für die Bearbeitung der Anfrage bleibt. Bei großen Anfragen (> 18 Mio. Nachrichten pro Minute) ist eine Vorankündigung von mindestens 30 Tagen erforderlich. Wir können nur zwei temporäre Kontingentereignisse pro Jahr genehmigen. Die Gesamtdauer des temporären Kontingents im Laufe des Jahres darf 30 Tage nicht überschreiten. Anfragen zu Produkteinführungen und besonderen Ereignissen unterliegen weiterhin den Anforderungen an die Client-Fehlerquote und den Best Practices.
Weitere Informationen finden Sie unter FCM-Kontingente.
Limits für Themennachrichten und Fan-out-Drosselung
Weitere Informationen finden Sie unter Kontingente und Limits für das Topic Messaging.
Drosselung minimierbarer Nachrichten
Wie unter Minimierbare Nachrichten beschrieben, sind minimierbare Nachrichten inhaltsfreie Benachrichtigungen, die so konzipiert sind, dass sie übereinander minimiert werden können. Wenn ein Entwickler dieselbe Nachricht zu häufig an eine App sendet, verzögern wir die Nachrichten, um die Auswirkungen auf den Akku des Nutzers zu reduzieren.
Wenn Sie beispielsweise eine große Anzahl neuer E‑Mail-Synchronisierungsanfragen an ein einzelnes Gerät senden, verzögern wir die nächste E‑Mail-Synchronisierungsanfrage möglicherweise um einige Minuten, damit das Gerät mit einer niedrigeren durchschnittlichen Rate synchronisiert werden kann. Diese Drosselung erfolgt ausschließlich, um die Auswirkungen auf den Akku für den Nutzer zu begrenzen.
Wenn Ihr Anwendungsfall hohe Burst-Sendemuster erfordert, sind nicht minimierbare Nachrichten möglicherweise die richtige Wahl. Achte darauf, dass solche Nachrichten den Inhalt enthalten, um den Akkuverbrauch zu reduzieren.
Minimierbare Nachrichten sind auf 20 Nachrichten pro App und Gerät beschränkt. Alle 3 Minuten wird eine Nachricht hinzugefügt.
Maximale Nachrichtenrate an ein einzelnes Gerät
Unter Android können Sie bis zu 240 Nachrichten pro Minute und 5.000 Nachrichten pro Stunde an ein einzelnes Gerät senden. Dieser hohe Schwellenwert soll kurzfristige Traffic-Spitzen ermöglichen, z. B. wenn Nutzer schnell über den Chat interagieren. Dieses Limit verhindert, dass Fehler in der Sendelogik versehentlich den Akku eines Geräts entladen.
Bei iOS wird ein Fehler zurückgegeben, wenn die Rate die APNs-Limits überschreitet.