Risoluzione dei problemi

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

Latenza

La tabella seguente descrive le possibili cause di una maggiore latenza:

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

Per rapidi aumenti del traffico, la modalità Datastore tenta di scalare automaticamente per soddisfare l'aumento della domanda. Quando la modalità Datastore scala, la latenza inizia a diminuire.

Gli hotspot (frequenze di lettura, scrittura ed eliminazione elevate fino a un intervallo di entità ristretto) limitano la scalabilità della modalità Datastore. Esamina la progettazione per la scalabilità e identifica i punti critici nella tua applicazione.

Contesa dovuta a un aggiornamento troppo frequente di una singola entità o a transazioni. lettura, scrittura

Riduci la frequenza di scrittura alle singole entità.

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

Query di unione lenta. read Ad esempio, le query con più filtri di uguaglianza (==) ma non supportate da indici composti possono comportare query di unione di unione lente. Per migliorare le prestazioni, aggiungi indici composti per queste query, consulta la sezione Ottimizzazione degli indici.
Letture di grandi dimensioni che restituiscono molte entità. read Utilizza i cursori di query per suddividere le letture di grandi dimensioni.
Troppe eliminazioni recenti. read
Questo ha un impatto notevole sulle operazioni che elencano i tipi in un database.
Se la latenza è causata da troppe eliminazioni recenti, il problema dovrebbe risolversi automaticamente dopo un po' di tempo. Se il problema persiste, contatta l'assistenza.
Fanout indice, in particolare per le proprietà array. write Esamina gli indici esplosivi 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.

INTERROTTO

Le seguenti situazioni possono aumentare il numero di errori ABORTED:

  • Un'entità che riceve troppi aggiornamenti al secondo.
  • Contesa dovuta a transazioni sovrapposte.
  • Aumenti di traffico che superano la regola 500-50-5 o che incontrano punti di interesse.
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:

  • Per rapidi aumenti del traffico, la modalità Datastore tenta di scalare automaticamente per soddisfare l'aumento della domanda. Quando la modalità Datastore scala, la latenza inizia a diminuire.
  • Gli hotspot limitano la capacità della modalità Datastore di fare lo scale up. Esamina la progettazione per la scalabilità per identificare gli hotspot.
  • Esamina la contesa dei dati nelle transazioni e il tuo utilizzo delle transazioni.
  • Riduci la frequenza di scrittura alle singole entità.

RESOURCE_EXHAUSTED

Le seguenti situazioni possono causare errori RESOURCE_EXHAUSTED:

Hai superato la quota del livello gratuito e la fatturazione non è abilitata 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 di proprietà indicizzato maggiore di 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 maggiori di 1.048.487 byte (1 MiB - 89 byte). Questo limite si applica alla somma dei valori della proprietà in un'entità. Ad esempio, quattro proprietà di 256 KiB superano il limite ciascuna.

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 modificate.

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 indicizzate, suddividi la proprietà in più proprietà o implementa la compressione per il valore della proprietà.