Wir möchten, dass jede Nachricht, die über FCM gesendet wird, zugestellt wird. Wenn wir jedoch versuchen, jede Nachricht zuzustellen, kann das die Nutzerfreundlichkeit beeinträchtigen. 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 auszubalancieren.
Drosselung von Downstream-Nachrichten
Mit der HTTP v1 API wurden Kontingente pro Projekt und Minute für Downstream-Nachrichten 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 starken Traffic-Spitzen.
Traffic-Spitzen können
zu Fehlern führen, weil das Kontingent überschritten wird. In diesem 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. 429-Antworten können auch in Überlastungssituationen zurückgegeben werden. Daher empfehlen wir dringend, 429-Antworten gemäß den veröffentlichten Empfehlungen zu verarbeiten.
Hinweise:
- Das Downstream-Kontingent bezieht sich auf Nachrichten, nicht auf Anfragen.
- Clientfehler (HTTP-Statuscode 400–499) werden gezählt (außer 429-Fehler).
- Kontingente gelten pro Minute, aber diese Minuten sind nicht an die Uhrzeit angepasst.
Kontingent beobachten
In der Google Cloud Console können Sie Kontingente, Nutzung und Fehler mit den folgenden Schritten ansehen:
- Rufen Sie die Google Cloud Console auf.
- Wählen Sie APIs &Dienste aus.
- Wählen Sie in der Tabellenliste Firebase Cloud Messaging API aus.
- Wählen Sie KONTINGENTE UND SYSTEMLIMITS aus.
Kontingenterhöhung anfordern
Bevor Sie eine Kontingenterhöhung anfordern, müssen folgende Voraussetzungen erfüllt sein:
- Ihre Nutzung liegt mindestens fünf aufeinanderfolgende Minuten pro Tag regelmäßig bei ≥ 80% des Kontingents.
- Die Clientfehlerrate liegt bei < 5 %, insbesondere bei hohem Traffic.
- 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 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 Ihre Anfrage zu senden.
FCM wird sich bemühen, die Anfrage zu erfüllen. Eine Erhöhung kann jedoch nicht garantiert werden.
Wenn Sie aufgrund einer bevorstehenden Produkteinführung oder eines zeitlich begrenzten Ereignisses ein höheres Kontingent für Downstream-Nachrichten benötigen, müssen Sie die Kontingenterhöhung über den Firebase-Support anfordern. Fordern Sie das Kontingent mindestens 15 Tage im Voraus an, damit genügend Zeit für die Bearbeitung der Anfrage bleibt. Bei großen Anfragen (mehr als 18 Millionen Nachrichten pro Minute) ist eine Vorlaufzeit von mindestens 30 Tagen erforderlich. Wir können nur zwei temporäre Kontingentereignisse pro Jahr genehmigen. Die Gesamtdauer des temporären Kontingents darf 30 Tage pro Jahr nicht überschreiten. Für Anfragen zu Produkteinführungen und besonderen Ereignissen gelten weiterhin die Anforderungen an die Clientfehlerrate und die Best Practices.
Weitere Informationen finden Sie unter FCM Kontingente.
Limits für Themennachrichten und Drosselung von Fanout-Nachrichten
Weitere Informationen finden Sie unter Kontingente und Limits für Themennachrichten.
Drosselung von minimierbaren Nachrichten
Wie unter Minimierbare Nachrichten, minimierbare Nachrichten beschrieben, sind inhaltslose Benachrichtigungen, die übereinander minimiert werden. Wenn ein Entwickler zu häufig dieselbe Nachricht 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 des Nutzers 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 Sie den Inhalt in die Nachrichten einfügen, um den Akkuverbrauch zu reduzieren.
Wir begrenzen minimierbare Nachrichten auf 20 Nachrichten pro App und Gerät mit einer Auffüllung von einer Nachricht alle drei Minuten.
Maximale Nachrichtenrate für ein einzelnes Gerät
Bei 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 Fehler in der Sendelogik den Akku eines Geräts versehentlich entladen.
Bei iOS wird ein Fehler zurückgegeben, wenn die Rate die APNs-Limits überschreitet.