Unser Ziel ist es, jede Nachricht zuzustellen, die über FCM gesendet wird. Die Zustellung jeder Nachricht führt jedoch manchmal zu einer schlechten Nutzererfahrung. In anderen Fällen müssen wir Grenzen festlegen, damit FCM einen skalierbaren Dienst für alle Absender 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 und schützt gleichzeitig die Stabilität des Systems und minimiert die Auswirkungen von Projekten mit Spitzen.
Spitzen im Traffic können zu Fehlern aufgrund von Kontingentüberschreitungen führen. In einem solchen Fall gibt das System den HTTP-Statuscode 429 RESOURCE_EXHAUSTED („QUOTA_EXCEEDED“) zurück, bis das Kontingent in der folgenden Minute wieder aufgefüllt wird. In Überlastungssituationen können auch 429-Antworten zurückgegeben werden. Wir empfehlen daher dringend, 429-Antworten gemäß den veröffentlichten Empfehlungen zu verarbeiten.
Hinweise:
- Beim Downstream-Kontingent werden Nachrichten und nicht Anfragen gemessen.
- Clientfehler (HTTP-Statuscode 400–499) werden gezählt (außer 429).
- Kontingente gelten pro Minute, aber diese Minuten sind nicht an die Uhrzeit angepasst.
Kontingent überwachen
Sie können Kontingente, Nutzung und Fehler in der Google CloudConsole aufrufen:
Rufen Sie die Google Cloud Console auf.
Wählen Sie APIs & 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 beantragen, sollten Sie Folgendes prüfen:
- Ihre Nutzung liegt regelmäßig mindestens 5 Minuten pro Tag bei ≥ 80% des Kontingents.
- Sie haben ein Client-Fehlerverhältnis von unter 5 %, insbesondere bei hohem Traffic.
- Sie halten sich an die Best Practices für das Senden von Nachrichten im großen Maßstab.
Wenn Sie diese Kriterien erfüllen, können Sie in der Google Cloud Console eine Kontingenterhöhung von bis zu +25% anfordern. Gehen Sie dazu so vor:
- Rufen Sie KONTINGENTE UND SYSTEMLIMITS auf.
- Wählen Sie in der Tabelle die Zeile Anfragen pro Minute senden aus.
- Klicken Sie auf Bearbeiten.
- Folgen Sie der Anleitung, um Ihren Antrag zu stellen.
FCM wird sich bemühen, der Anfrage nachzukommen. Eine Erhöhung kann jedoch nicht garantiert werden.
Wenn Sie aufgrund eines bevorstehenden Starts oder eines temporären Ereignisses mehr Kontingent für Downstream-Nachrichten benötigen, müssen Sie die Kontingenterhöhung über den Firebase-Support beantragen. Beantragen Sie das Kontingent mindestens 15 Tage im Voraus, damit genügend Zeit für die Bearbeitung des Antrags bleibt. Bei großen Anfragen (über 18 Millionen Nachrichten pro Minute) sind mindestens 30 Tage Vorlaufzeit erforderlich. Wir können nur zwei temporäre Kontingentereignisse pro Jahr genehmigen. Die Gesamtdauer des temporären Kontingents darf im Laufe des Jahres 30 Tage nicht überschreiten. Für Anfragen zu Starts und besonderen Ereignissen gelten weiterhin die Anforderungen an das Client-Fehlerverhältnis und die Best Practices.
Weitere Informationen finden Sie unter FCM-Kontingente.
Limits für Themennachrichten und Drosselung von Fanout
Weitere Informationen finden Sie unter Kontingente und Limits für Topic-Messaging.
Minimierbare Nachrichtenbegrenzung
Wie unter Minimierbare Nachrichten beschrieben, sind minimierbare Nachrichten inhaltslose Benachrichtigungen, die übereinander minimiert werden. Wenn ein Entwickler dieselbe Nachricht zu häufig an eine App sendet, verzögern wir Nachrichten, um die Auswirkungen auf den Akku eines Nutzers zu verringern.
Wenn Sie beispielsweise eine große Anzahl neuer E‑Mail-Synchronisierungsanfragen an ein einzelnes Gerät senden, verzögern wir möglicherweise die nächste E‑Mail-Synchronisierungsanfrage 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. Achten Sie bei solchen Nachrichten darauf, dass der Inhalt in diesen Nachrichten enthalten ist, um die Akku-Kosten zu senken.
Wir beschränken minimierbare Nachrichten auf 20 Nachrichten pro App und Gerät. Danach wird alle 3 Minuten eine neue Nachricht hinzugefügt.
Maximale Nachrichtenrate für 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 Grenzwert soll kurzfristige Traffic-Spitzen ermöglichen, z. B. wenn Nutzer schnell über den Chat interagieren. Dieses Limit verhindert, dass die Batterie eines Geräts durch Fehler in der Sendelogik versehentlich entladen wird.
Unter iOS wird ein Fehler zurückgegeben, wenn die Rate die APNs-Limits überschreitet.