FCM-Drosselung und ‑Kontingente

Unser Ziel ist es, alle mit FCM gesendeten Nachrichten zuzustellen. Wenn jedoch jede Nachricht zugestellt wird, kann dies zu einer schlechten Nutzererfahrung führen. 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.

Spiky traffic patterns can result in quota exceeded errors. Wenn das Kontingent überschritten wurde, 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 in Überlastungssituationen 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).
  • Die Kontingente gelten pro Minute, aber diese Minuten sind nicht an die Uhrzeit gebunden.

Kontingent überwachen

Sie können Kontingente, Nutzung und Fehler in der Google CloudConsole aufrufen:

  1. Rufen Sie die Google Cloud-Konsole auf.

  2. Wählen Sie APIs & Dienste aus.

  3. Wählen Sie in der Tabellenliste die Firebase Cloud Messaging API aus.

  4. 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 Spitzen-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:

  1. Rufen Sie KONTINGENTE UND SYSTEMLIMITS auf.
  2. Wählen Sie in der Tabelle die Zeile Anfragen pro Minute senden aus.
  3. Klicken Sie auf Bearbeiten.
  4. 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 ein höheres Kontingent für Downstream-Nachrichten benötigen, müssen Sie die Kontingenterhöhung über den Firebase-Support anfordern. Fordern Sie Ihr Kontingent mindestens 15 Tage im Voraus an, damit genügend Zeit für die Bearbeitung der Anfrage bleibt. Bei großen Anfragen (über 18 Millionen Nachrichten pro Minute) ist eine Vorlaufzeit von mindestens 30 Tagen erforderlich. Wir können nur zwei Ereignisse mit temporärem Kontingent pro Jahr genehmigen. Die Gesamtdauer des temporären Kontingents darf im Laufe des Jahres 30 Tage nicht überschreiten. Für Anfragen zu Produkteinführungen 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 Themennachrichten.

Minimierbare Nachrichtenbegrenzung

Wie unter Minimierbare Nachrichten beschrieben, sind minimierbare Nachrichten benachrichtigungsbezogene Nachrichten ohne Inhalt, die übereinander minimiert werden. 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 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.