Risoluzione dei problemi

Questa pagina mostra come risolvere i problemi relativi a Firestore in modalità Datastore.

Latenza

La tabella seguente descrive le possibili cause dell'aumento della latenza:

Causa della latenza Tipi di operazioni interessate Risoluzione
Traffico sostenuto che supera la regola 500-50-5. lettura, scrittura

In caso di aumenti rapidi del traffico, la modalità Datastore tenta di eseguire automaticamente lo scaling per soddisfare la domanda in aumento. Quando la modalità Datastore viene scalata, la latenza inizia a diminuire.

Gli hot spot (elevati tassi di lettura, scrittura ed eliminazione per un intervallo ristretto di entità) limitano la capacità di scalabilità della modalità Datastore. Esamina la progettazione per la scalabilità e identifica i punti critici della tua applicazione.

Concorrenza, dovuta all'aggiornamento troppo frequente di una singola entità o alle transazioni. lettura, scrittura

Riduci la frequenza di scrittura per le singole entità.

Esamina l'isolamento e la coerenza delle transazioni e il modo in cui utilizzi le transazioni.

Query di unione dinamica lenta. read Ad esempio, le query con più filtri di uguaglianza (==) ma non supportate da indici composti possono comportare query di unione dinamica lente. Per migliorare le prestazioni, aggiungi indici compositi per queste query. Consulta Ottimizzazione degli indici.
Letture di grandi dimensioni che restituiscono molte entità. read Utilizza cursori di query per suddividere le letture di grandi dimensioni.
Troppe eliminazioni recenti. read
Questo influisce notevolmente sulle operazioni che elencano i tipi in un database.
Se la latenza è causata da un numero eccessivo di eliminazioni recenti, il problema dovrebbe risolversi automaticamente dopo un po' di tempo. Se il problema persiste, contatta l'assistenza.
Espansione dell'indice, in particolare per le proprietà array. write Esamina gli indici esplodenti e il tuo utilizzo delle proprietà array.

Codici di errore

Questa sezione elenca i problemi che potresti riscontrare e fornisce suggerimenti su come risolverli.

DEADLINE_EXCEEDED

DEADLINE_EXCEEDED

A deadline was exceeded on the server.

Per risolvere il problema, consulta la guida alla risoluzione dei problemi di latenza.

ABORTED

Le seguenti situazioni possono aumentare gli errori ABORTED:

  • Un'entità che riceve troppi aggiornamenti al secondo.
  • Concorrenza dovuta a transazioni sovrapposte.
  • Aumenti di traffico che superano la regola 500-50-5 o che presentano hot spot.
ABORTED

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

Oppure

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.

Per risolvere il problema:

  • In caso di aumenti rapidi del traffico, la modalità Datastore tenta di eseguire automaticamente lo scaling per soddisfare la domanda in aumento. Quando la modalità Datastore viene scalata, la latenza inizia a diminuire.
  • Gli hot spot limitano la capacità della modalità Datastore di eseguire l'upgrade. Consulta la sezione Progettazione per la scalabilità per identificare gli hot spot.
  • Esamina la contesa dei dati nelle transazioni e il tuo utilizzo delle transazioni.
  • Riduci la frequenza di scrittura per le singole entità.

RESOURCE_EXHAUSTED

Le seguenti situazioni possono causare errori RESOURCE_EXHAUSTED:

Hai superato la quota del livello gratuito e la fatturazione non è attivata per il tuo progetto.

RESOURCE_EXHAUSTED

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

Per risolvere il problema:

INVALID_ARGUMENT

Le seguenti situazioni possono causare errori INVALID_ARGUMENT:

  • Tentativo di commit di un'entità con un valore della proprietà indicizzata superiore a 1500 byte. Questo limite si applica alla codifica UTF-8 del valore della proprietà.
  • Tentativo di commit di un'entità con valori di proprietà non indicizzati superiori a 1.048.487 byte (1 MiB - 89 byte). Questo limite si applica alla somma dei valori delle proprietà in un'entità. Ad esempio, quattro proprietà di 256 KiB ciascuna superano il limite.

1500 byte (indicizzati) e 1.048.487 byte (non indicizzati) sono limiti per i valori delle proprietà. Non puoi superare questi limiti e non si tratta di quote che possono essere regolate.

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

o

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

Per risolvere il problema:

  • Per i valori delle proprietà indicizzate, suddividi la proprietà in più proprietà. Se possibile, crea una proprietà non indicizzata e sposta i dati che non devono essere indicizzati nella proprietà non indicizzata.
  • Per i valori delle proprietà non indicizzati, suddividi la proprietà in più proprietà o implementa la compressione per il valore della proprietà.