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:
- 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 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à.