Soluciona problemas

En esta página, se muestra cómo resolver problemas con Firestore en modo Datastore.

Latencia

En la siguiente tabla, se describen las posibles causas de una mayor latencia:

Causa de la latencia Tipos de operaciones afectadas Solución
Tráfico continuo que excede la regla de 500-50-5. lectura y escritura

Para los aumentos rápidos del tráfico, el modo Datastore intenta escalar de forma automática para satisfacer el aumento en la demanda. Cuando el modo Datastore escala, la latencia comienza a disminuir.

Los hotspots (tasas altas de lectura, escritura y eliminación para un rango de entidades pequeño) limitan la capacidad de escalamiento del modo Datastore. Revisa el diseño de la escala y, también, identifica los hotspots en tu aplicación.

Contención, ya sea a partir de la actualización de una sola entidad con demasiada frecuencia o a partir de transacciones. lectura y escritura

Reduce la tasa de escritura de entidades individuales.

Revisa el aislamiento y la coherencia de las transacciones, y cómo las usas.

Consultas de combinación lentas. read Por ejemplo, las consultas con varios filtros de igualdad (==), pero sin el respaldo de índices compuestos, pueden dar como resultado consultas de unión lentas. Si deseas mejorar el rendimiento, agrega índices compuestos para estas consultas. Consulta la sección sobre cómo optimizar los índices.
Lecturas grandes que muestran muchas entidades. lectura Usa cursores de consulta para dividir las lecturas grandes.
Demasiadas eliminaciones recientes. read
Esto afecta mucho las operaciones que enumeran tipos en una base de datos.
Si la latencia se debe a demasiadas eliminaciones recientes, el problema debería resolverse de forma automática después de un tiempo. Si el problema no se resuelve, comunícate con el equipo de asistencia.
Fanout de índices, especialmente para propiedades de array. escritura Revisa los índices con alto crecimiento y el uso que haces de los arreglos de propiedades.

Códigos de error

En esta sección, se enumeran los errores que puedes encontrar y se proporcionan sugerencias para solucionarlos.

DEADLINE_EXCEEDED

DEADLINE_EXCEEDED

A deadline was exceeded on the server.

Para resolver este problema, consulta la guía de solución de problemas de latencia.

ABORTED

Las siguientes situaciones pueden aumentar los errores ABORTED:

  • Una entidad que recibe demasiadas actualizaciones por segundo.
  • Contención de las transacciones superpuestas
  • Aumentos de tráfico que exceden la regla 500-50-5 o se encuentran hotspots.
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:

  • Para los aumentos rápidos del tráfico, el modo Datastore intenta escalar de forma automática para satisfacer el aumento de la demanda. Cuando el modo Datastore escala, la latencia comienza a disminuir.
  • Los hotspots limitan la capacidad del modo Datastore para escalar verticalmente. Revisa el diseño para escalamiento a fin de identificar los hotspots.
  • Revisa la contención de datos en transacciones y el uso de transacciones.
  • Reduce la tasa de escritura de entidades individuales.

RESOURCE_EXHAUSTED

Las siguientes situaciones pueden generar errores RESOURCE_EXHAUSTED:

Superaste la cuota del nivel gratuito, y la facturación no está habilitada para 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 causar errores INVALID_ARGUMENT:

  • Si intentas confirmar una entidad con un valor de propiedad indexed mayor que 1,500 bytes Este límite se aplica a la codificación UTF-8 del valor de la propiedad.
  • Intentar confirmar una entidad con valores de propiedad no-indexed mayores a 1,048,487 bytes (de 1 MiB a 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 superan el límite cada una.

1,500 bytes (indexados) y 1,048,487 bytes (no indexados) son límites para los valores de las propiedades. No puedes exceder estos límites y 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 propiedad indexadas, divide la propiedad en varias propiedades. Si es posible, crea una propiedad no indexada y mueve a ella los datos que no necesitan indexarse.
  • En el caso de los valores de propiedad no indexados, divide la propiedad en varias propiedades o implementa la compresión para ese valor.