Risoluzione dei problemi

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

Latenza

Nella tabella seguente sono descritte le possibili cause dell'aumento della latenza:

Causa della latenza Tipi di operazioni interessate Risoluzione
Il traffico sostenuto che supera la Regola 500-50-5. read, write

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

Punti di interesse (tasso elevato di lettura, scrittura ed eliminazione in un intervallo di entità ristretto) limita la scalabilità della modalità Datastore. Esamina la progettazione per la scalabilità e identifica i punti critici della tua applicazione.

Contenzioso, o riguardando anche l'aggiornamento di una singola entità spesso o da transazioni. read, write

Ridurre la frequenza di scrittura per singole entità.

Esamina l'isolamento e la coerenza delle transazioni e come utilizzi le transazioni.

Query di unione di unione lente. read Ad esempio, query con più filtri di uguaglianza (==) ma non supportati da indici composti, può causare query di unione unite 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. leggi
Questo influisce notevolmente 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.
Fanout dell'indice, soprattutto per le proprietà array. write Rivedi indici che esplodono e l'utilizzo delle proprietà degli 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 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 scale per soddisfare la domanda in aumento. Quando la modalità Datastore aumenta, 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 di 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 di tipo 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 ognuna delle quali supera 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 sono 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à.