Dépannage

Cette page vous explique comment résoudre les problèmes liés à Firestore.

Latence

Le tableau ci-dessous décrit les causes possibles de l'augmentation de la latence :

Cause de la latence Types d'opérations concernés Solution
Trafic soutenu dépassant la règle 500-50-5 lecture, écriture (read, write)

Pour augmenter le trafic rapidement, Firestore tente d'effectuer un scaling automatique afin de répondre à l'accroissement de la demande. Lorsque Firestore effectue un scaling, la latence diminue.

Les zones cliquables (taux de lecture, d'écriture et de suppression élevés sur une plage de documents restreinte) limitent la capacité de Firestore à évoluer. Examinez la conception à grande échelle et identifiez les zones cliquables de votre application.

Contention imputable à la mise à jour trop fréquente d'un seul document ou à des transactions lecture, écriture (read, write)

Le taux d'écriture sur des documents individuels doit être inférieur à une écriture par seconde.

Examinez la contention des données dans les transactions et l'utilisation des transactions.

Requêtes de jointure par fusion lentes lecture (read) Par exemple, les requêtes comportant plusieurs filtres d'égalité (==) mais ne s'appuyant pas sur des index composites peuvent ralentir les requêtes de jointure par fusion. Pour améliorer les performances, ajoutez des index composites pour ces requêtes. Reportez-vous à la raison°3 dans la section Pourquoi ma requête Firestore est-elle lente ?
Lectures volumineuses renvoyant de nombreux documents. lecture (read) Utilisez la pagination pour scinder les opérations de lecture de grande taille.
Trop de suppressions récentes read
Cela a un impact considérable sur les opérations qui répertorient les collections d'une base de données.
Si la latence est causée par un trop grand nombre de suppressions récentes, le problème devrait se résoudre automatiquement après un certain temps. Si le problème persiste, contactez l'assistance.
Ajouts et suppressions d'écouteurs trop rapides requêtes d'écoute en temps réel Consultez les bonnes pratiques pour les mises à jour en temps réel.
Écoute de documents volumineux ou d'une requête avec de nombreux résultats requêtes d'écoute en temps réel Consultez les bonnes pratiques pour les mises à jour en temps réel.
Distribution ramifiée d'index, en particulier pour les champs de tableau et les champs de mappage écriture (write) Vérifier l'utilisation des champs du tableau et du mappage des champs Pour les champs de mappage, vous pouvez désactiver l'indexation des sous-champs.
Écritures volumineuses et écritures par lot écriture (write)

Essayez de réduire le nombre d'écritures dans chaque tâche d'écriture par lot. Les écritures par lot sont atomiques et la présence de nombreuses écritures dans un seul lot peut entraîner une augmentation de la latence et des conflits. Par exemple, un lot de 10 écritures est plus performant qu'un lot de 500 écritures.

Pour les entrées de données groupées ne nécessitant pas d'atomicité, utilisez une bibliothèque cliente de serveur avec des écritures individuelles chargées en parallèle. Les écritures par lot sont plus performantes que les écritures sérialisées, mais pas plus que les écritures chargées en parallèle.

Codes d'erreur

Cette section répertorie les problèmes que vous pouvez rencontrer et fournit des suggestions pour les résoudre.

DEADLINE_EXCEEDED

La situation suivante peut provoquer un nombre plus important d'erreurs DEADLINE_EXCEEDED :

  • Une augmentation de la latence a entraîné un dépassement du délai par l'opération (60 secondes par défaut).
DEADLINE_EXCEEDED

A deadline was exceeded on the server.

Pour résoudre ce problème, consultez le guide de résolution des problèmes de latence.

ABORTED

Les situations suivantes peuvent provoquer un nombre plus important d'erreurs ABORTED :

  • Dépassement de la limite d'une écriture par seconde pour un seul document.
  • Contention imputable aux transactions qui se chevauchent
  • Augmentation du trafic dépassant la règle des 500-50-5 ou présence de hotspots
ABORTED

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

Ou

ABORTED

Aborted due to cross-transaction contention. This occurs when multiple
transactions attempt to access the same data, requiring Firestore to abort at
least one in order to enforce serializability.

Pour remédier à ce problème :

  • Pour augmenter le trafic rapidement, Firestore tente d'effectuer un scaling automatique afin de répondre à l'accroissement de la demande. Lorsque Firestore effectue un scaling, la latence diminue.
  • Les hotspots limitent la capacité de Firestore à évoluer à la hausse. Consultez la page Concevoir des solutions évolutives pour identifier les hotspots.
  • Examinez la contention des données dans les transactions et votre utilisation des transactions.
  • Le taux d'écriture sur des documents individuels doit être inférieur à une écriture par seconde.

RESOURCE_EXHAUSTED

Les situations suivantes peuvent provoquer des erreurs RESOURCE_EXHAUSTED :

  • Vous avez dépassé le quota de la version gratuite et la facturation n'est pas activée pour votre projet.
  • Vous avez dépassé 10 000 écritures dans la base de données ou la limite de débit de 10 Mio/s.
RESOURCE_EXHAUSTED

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

Pour remédier à ce problème :