Fehlerbehebung

Auf dieser Seite erfahren Sie, 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 schnellen Trafficanstiegen versucht der Datastore-Modus automatisch, die erhöhte Nachfrage zu erfüllen. Wenn der Datastore-Modus skaliert, verringert sich die Latenz.

Hotspots (hohe Lese-, Schreib- und Löschraten für einen kleinen Entitätsbereich) beschränken die Skalierbarkeit des Datastore-Modus. Überprüfen Sie das Skalierbares Design und ermitteln Sie Hotspots in Ihrer Anwendung.

Konflikt, entweder durch zu häufiges Aktualisieren einer einzelnen Entität oder durch Transaktionen. Lese-/Schreibzugriff

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

Lesen Sie mehr über Transaktionsisolation und Konsistenz und die Verwendung von Transaktionen.

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. Um die Leistung zu verbessern, fügen Sie zusammengesetzte Indexe für diese Abfragen hinzu. Weitere Informationen finden Sie unter Indexe optimieren.
Große Lesevorgänge, die viele Entitäten zurückgeben. read Verwenden Sie Abfragecursor, um große Lesevorgänge aufzuteilen.
Zu viele kürzliche Löschvorgänge. read
Dies wirkt sich erheblich auf Vorgänge aus, die Arten in Datenbanken 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 für Array-Properties. write Sehen Sie sich explodierende Indexe und die Verwendung von Array-Properties an.

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, die zu viele Aktualisierungen pro Sekunde empfängt.
  • 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 lösen Sie dieses Problem:

  • Bei schnellen Trafficanstiegen versucht der Datastore-Modus automatisch, die erhöhte Nachfrage zu erfüllen. Wenn der Datastore-Modus skaliert, verringert sich die Latenz.
  • Hotspots begrenzen die Fähigkeit des Datastore-Modus, vertikal zu skalieren. Informationen zum Ermitteln von Hotspots finden Sie unter Zur Skalierung entwickeln.
  • 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 lösen Sie dieses Problem:

INVALID_ARGUMENT

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

  • Versuch, eine Entität mit einem indexierten Attributwert zu committen, der größer als 1.500 Byte ist. Dieses Limit gilt für die UTF-8-Codierung des Property-Werts.
  • Versuch,eine Entität mit nicht indexierten Attributwerten zu committen,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. Beispiel: Vier Properties mit jeweils 256 KiB überschreiten das Limit.

1.500 Byte (indexiert) und 1.048.487 Byte (nicht indexiert) sind die Grenzwerte für Attributwerte. Diese Limits können nicht überschritten werden und 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 lösen Sie dieses Problem:

  • Teilen Sie indexierte Property-Werte in mehrere Properties auf. Erstellen Sie nach Möglichkeit eine nicht indexierte Property und verschieben Sie Daten, die nicht indexiert werden müssen, in diese Property.
  • Bei nicht indexierten Property-Werten können Sie die Property in mehrere Properties aufteilen oder eine Komprimierung für den Property-Wert implementieren.