Solución de problemas

En esta página se explica cómo solucionar problemas con Firestore en modo Datastore.

Latencia

En la siguiente tabla se describen las posibles causas del aumento de la latencia:

Causa de la latencia Tipos de operaciones afectadas Resolución
Tráfico sostenido que supera la regla 500-50-5. Lectura y escritura

En caso de aumentos rápidos del tráfico, el modo Datastore intenta escalarse automáticamente para satisfacer el aumento de la demanda. Cuando el modo Datastore se escala, la latencia empieza a disminuir.

Los puntos de acceso (tasas altas de lectura, escritura y eliminación en un intervalo de entidades reducido) limitan la capacidad de escalado del modo Datastore. Revisa el diseño para la escalabilidad e identifica los puntos de acceso de tu aplicación.

Contención, ya sea por actualizar una sola entidad con demasiada frecuencia o por transacciones. Lectura y escritura

Reduce la tasa de escritura en entidades individuales.

Consulta aislamiento y coherencia de las transacciones y cómo usarlas.

Consultas de combinación de fusión lentas. read Por ejemplo, las consultas con varios filtros de igualdad (==) que no estén respaldadas por índices compuestos pueden dar lugar a consultas de combinación lentas. Para mejorar el rendimiento, añade índices compuestos a estas consultas. Consulta Optimizar índices.
Lecturas grandes que devuelven muchas entidades. read Usa cursores de consulta para dividir lecturas grandes.
Se han eliminado demasiados elementos recientemente. read
Esto afecta considerablemente a las operaciones que muestran los tipos de una base de datos.
Si la latencia se debe a que se han eliminado demasiados elementos recientemente, el problema debería resolverse automáticamente al cabo de un tiempo. Si el problema no se resuelve, póngase en contacto con el servicio de asistencia.
Indexación de salida, especialmente para propiedades de matriz. write Revisa los índices explosivos y el uso que haces de las propiedades de matriz.

Códigos de error

En esta sección se enumeran los problemas que puede encontrar y se ofrecen sugerencias para solucionarlos.

DEADLINE_EXCEEDED

DEADLINE_EXCEEDED

A deadline was exceeded on the server.

Para solucionar este problema, consulta la guía para solucionar problemas de latencia.

ABORTED

Las siguientes situaciones pueden aumentar los errores ABORTED:

  • Una entidad que recibe demasiadas actualizaciones por segundo.
  • Contención de transacciones superpuestas.
  • Aumentos de tráfico que superen la regla del 500-50-5 o que se produzcan en puntos de acceso.
ABORTED

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

O

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.

Para solucionar este problema, sigue estos pasos:

  • En caso de aumentos rápidos del tráfico, el modo Datastore intenta escalar automáticamente para satisfacer el aumento de la demanda. Cuando el modo Datastore se escala, la latencia empieza a disminuir.
  • Los puntos de acceso limitan la capacidad del modo Datastore para aumentar la escala. Consulta el artículo sobre diseño para la escalabilidad para identificar los puntos de acceso.
  • Revisa la contención de datos en transacciones y tu uso de las transacciones.
  • Reduce la tasa de escritura en entidades individuales.

RESOURCE_EXHAUSTED

Las siguientes situaciones pueden provocar errores de RESOURCE_EXHAUSTED:

Has superado la cuota del nivel gratuito y la facturación no está habilitada en tu proyecto.

RESOURCE_EXHAUSTED

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

Para solucionar este problema, sigue estos pasos:

INVALID_ARGUMENT

Las siguientes situaciones pueden provocar errores INVALID_ARGUMENT:

  • Se ha intentado confirmar una entidad con un valor de propiedad indexado superior a 1500 bytes. Este límite se aplica a la codificación UTF-8 del valor de la propiedad.
  • Se ha intentado confirmar una entidad con valores de propiedad sin indexar superiores a 1.048.487 bytes (1 MiB - 89 bytes). Este límite se aplica a la suma de los valores de las propiedades de una entidad. Por ejemplo, cuatro propiedades de 256 KiB cada una superan el límite.

Los límites de los valores de propiedad son 1500 bytes (indexados) y 1.048.487 bytes (sin indexar). No puedes superar estos límites, que no son cuotas que se puedan ajustar.

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

Para solucionar este problema, sigue estos pasos:

  • En el caso de los valores de propiedades indexados, divide la propiedad en varias propiedades. Si es posible, cree una propiedad sin indexar y mueva los datos que no necesiten indexarse a esa propiedad.
  • En el caso de los valores de propiedades no indexados, divide la propiedad en varias propiedades o implementa la compresión del valor de la propiedad.