Fehlerbehebung

Auf dieser Seite wird beschrieben, wie Sie Probleme mit Firestore im Datastore-Modus beheben.

Latenz

In folgender Tabelle werden mögliche Ursachen für eine erhöhte Latenz beschrieben:

Latenzursache Arten von betroffenen Vorgängen Lösung
Kontinuierlicher Traffic, der die Regel 500-50-5 überschreitet. Lese-/Schreibzugriff

Bei einem schnellen Anstieg des Traffics wird im Datastore-Modus eine automatische Skalierung versucht, um der erhöhten Nachfrage gerecht zu werden. Wenn der Datastore-Modus skaliert wird, nimmt die Latenz ab.

Hotspots (hohe Lese-, Schreib- und Löschraten bei einem kleinen Entitätenbereich) schränken die Skalierungsfähigkeit des Datastore-Modus ein. Überprüfen Sie das Skalierbares Design und ermitteln Sie Hotspots in Ihrer Anwendung.

Konflikte, die entweder durch zu häufige Aktualisierung einer einzelnen Entität oder durch Transaktionen verursacht werden. Lese-/Schreibzugriff

Reduzieren Sie die Schreibrate für einzelne Entitäten.

Prüfen Sie die Transaktionsisolation und -konsistenz und prüfen Sie, wie Sie Transaktionen verwenden.

Anfragen für langsame Join-Vorgänge. read Beispielsweise können Anfragen mit mehreren Gleichheitsfiltern (==), die jedoch nicht von zusammengesetzten Indexen unterstützt werden, zu langsamen Join-Anfragen führen. Fügen Sie für diese Abfragen zusammengesetzte Indexe hinzu, um die Leistung zu verbessern. Weitere Informationen finden Sie unter Indexe optimieren.
Große Lesevorgänge, die viele Entitäten zurückgeben. read Verwenden Sie Abfrage-Cursor, um große Lesevorgänge aufzuteilen.
Zu viele kürzliche Löschvorgänge. read
Dies wirkt sich stark auf Vorgänge aus, die Typen in einer Datenbank auflisten.
Wenn die Latenz durch zu viele kürzliche Löschvorgänge verursacht wird, sollte sich das Problem nach einiger Zeit von selbst beheben. Tritt das Problem weiter auf, wenden Sie sich an den Support.
Index-Fanout, insbesondere bei Array-Attributen write Prüfen Sie explodierende Indexe und Ihre Verwendung von Array-Attributen.

Fehlercodes

In diesem Abschnitt sind mögliche Probleme sowie Vorschläge zu deren Behebung aufgeführt.

DEADLINE_EXCEEDED

DEADLINE_EXCEEDED

A deadline was exceeded on the server.

Informationen zur Behebung dieses Problems finden Sie im Leitfaden zur Fehlerbehebung bei Latenzen.

ABORTED

Folgende Situationen können ABORTED-Fehler erhöhen:

  • Eine Entität erhält zu viele Updates pro Sekunde.
  • Konflikte bei sich überschneidenden Transaktionen.
  • Trafficanstiege, die die 500-50-5-Regel überschreiten oder auf Hotspots treffen.
ABORTED

Too much contention on these datastore entities. Please try again.

Oder

ABORTED

Aborted due to cross-transaction contention. This occurs when multiple
transactions attempt to access the same data, requiring Datastore mode
to abort at least one in order to enforce serializability.

So beheben Sie das Problem:

  • Bei einem schnellen Trafficanstieg wird im Datastore-Modus versucht, automatisch zu skalieren, um der erhöhten Nachfrage gerecht zu werden. Wenn der Datastore-Modus skaliert wird, nimmt die Latenz ab.
  • Hotspots schränken die Fähigkeit des Datastore-Modus zum Hochskalieren ein. Informationen zum Erkennen von Hotspots finden Sie unter Skalierbares Design.
  • Prüfen Sie auf Datenkonflikte bei Transaktionen und Ihre Nutzung von Transaktionen.
  • Reduzieren Sie die Schreibrate für einzelne Entitäten.

RESOURCE_EXHAUSTED

Folgende Situationen können zu RESOURCE_EXHAUSTED-Fehlern führen:

Sie haben das kostenlose Kontingentkontingent überschritten und die Abrechnung für Ihr Projekt ist nicht aktiviert.

RESOURCE_EXHAUSTED

Some resource has been exhausted, perhaps a per-user quota, or perhaps the entire file system is out of space.

So beheben Sie das Problem:

INVALID_ARGUMENT

Die folgenden Situationen können INVALID_ARGUMENT-Fehler verursachen:

  • Versuch, einen Commit für eine Entität auszuführen, deren Attributwert indexed größer als 1.500 Byte ist. Dieses Limit gilt für die UTF-8-Codierung des Property-Werts.
  • Versuch eines Commits für eine Entität mit nicht indexierten Attributwerten, die größer als 1.048.487 Byte (1 MiB – 89 Byte) sind. Dieses Limit gilt für die Summe der Attributwerte in einer Entität. Beispielsweise überschreiten vier Attribute mit jeweils 256 KiB den Grenzwert.

1.500 Byte (indexiert) und 1.048.487 Byte (nicht indexiert) sind die Limits für Attributwerte. Sie können diese Limits nicht überschreiten und sie sind keine Kontingente, die angepasst werden können.

INVALID_ARGUMENT: The value of property property-name is longer than 1500 bytes

oder

INVALID_ARGUMENT: The value of property property_name is longer than 1048487 bytes

So beheben Sie das Problem:

  • Teilen Sie bei indexierten Attributwerten das Attribut in mehrere Attribute auf. Erstellen Sie nach Möglichkeit ein nicht indexiertes Attribut und verschieben Sie Daten, die nicht indexiert werden müssen, in dieses nicht indexierte Attribut.
  • Teilen Sie bei nicht indexierten Attributwerten das Attribut in mehrere Attribute auf oder implementieren Sie die Komprimierung für den Attributwert.