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 rápidos de tráfico, el modo Datastore intenta escalar para satisfacer la demanda creciente. Cuando se activa el modo Datastore y la latencia empieza a disminuir. Puntos de acceso (tasas altas de lectura, escritura y eliminación en un rango de entidades reducido) 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 de la actualización de una sola entidad con frecuencia o de transacciones. | lectura y escritura |
Reduce la tasa de escritura a las entidades individuales. Revisa el aislamiento y la coherencia de la transacción. 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 en estas consultas.
ver
Optimiza índices.
|
Son lecturas grandes que muestran muchas entidades. | read | Usa cursores de consulta para dividir las lecturas grandes. |
Demasiadas eliminaciones recientes. | leer Esto afecta en gran medida 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 | Revisión índices con alto crecimiento y el uso de las propiedades de los arrays. |
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
:
- Es 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 rápidos de tráfico, el modo Datastore intenta escalar para satisfacer la demanda creciente. Cuando se activa el modo Datastore y la latencia empieza a disminuir.
- Los hotspots limitan la capacidad del modo Datastore para escalar verticalmente, diseñar a escala para identificar puntos problemáticos.
- Revisa la contención de datos en transacciones y el uso de transacciones.
- Reduce la tasa de escritura a las 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
:
- Intentar 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.
- Intenta confirmar una entidad con valores de propiedad no indexados mayores de 1,048,487 bytes (de 1 MiB a 89 bytes). Este límite se aplica a la suma de los valores de propiedad en una entidad. Por ejemplo, cuatro propiedades de 256 KiB cada uno excede el límite.
1,500 bytes (indexados) y 1,048,487 bytes (no indexados) se límites para los valores de propiedad. No puedes que superan estos límites y no son cuotas que se pueden 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:
- Para los valores de propiedad indexados, divide el en varias propiedades. Si es posible, crea una propiedad no indexada. y mover los datos que no necesitan indexarse propiedad.
- Para los valores de propiedad no indexados, divídela en varias propiedades o implementar la compresión para el valor de la propiedad.