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:
- Attendi il ripristino giornaliero della quota del livello gratuito o attiva la fatturazione per il tuo progetto.
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à.