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 aumentos de tráfico rápidos, el modo Datastore intenta escalar de forma automática para satisfacer la demanda creciente. Cuando el modo Datastore escala, la latencia comienza a disminuir. Los hotspots (tasas altas de lectura, escritura y eliminación en un rango pequeño de entidades) 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 desde la actualización de una sola entidad con demasiada frecuencia o desde transacciones. | lectura y escritura |
Reduce la tasa de escritura en entidades individuales. Revisa el aislamiento y la coherencia de las transacciones y cómo usas las transacciones. |
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.
Para mejorar el rendimiento, agrega índices compuestos para estas consultas. Consulta Cómo optimizar los índices.
|
Operaciones de lectura grandes que muestran muchas entidades. | read | Usa cursores de consulta para dividir las lecturas grandes. |
Demasiadas eliminaciones recientes. | read Esto afecta en gran medida 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. |
Distribución de índices, especialmente para propiedades de array. | write | Revisa los índices de expansión y el uso de propiedades de array. |
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 aumentos de tráfico rápidos, el modo Datastore intenta escalar de forma automática para satisfacer la demanda creciente. Cuando el modo Datastore escala, la latencia comienza a disminuir.
- Los hotspots limitan la capacidad del modo Datastore para escalar verticalmente. Revisa cómo diseñar para escalar para identificar hotspots.
- Revisa la contención de datos en transacciones y el uso de transacciones.
- Reduce la tasa de escritura en 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:
- Espera el restablecimiento diario de la cuota de nivel gratuito o habilita la facturación para tu proyecto.
INVALID_ARGUMENT
Las siguientes situaciones pueden causar errores INVALID_ARGUMENT
:
- Intento de confirmación de una entidad con un valor de propiedad indexada superior a 1,500 bytes Este límite se aplica a la codificación UTF-8 del valor de la propiedad.
- Intento de confirmar una entidad con valores de propiedad no indexados superiores a 1,048,487 bytes (1 MiB - 89 bytes). Este límite se aplica a la suma de los valores de propiedad de una entidad. Por ejemplo, cuatro propiedades de 256 KiB cada una superan el límite.
1,500 bytes (indexados) y 1,048,487 bytes (sin indexar) son los límites para los valores de propiedad. No puedes superar 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 propiedades indexadas, divide la propiedad en varias propiedades. Si es posible, crea una propiedad no indexada y mueve los datos que no necesitan indexarse a esa propiedad.
- Para los valores de propiedad no indexados, divide la propiedad en varias propiedades o implementa la compresión para el valor de la propiedad.