Nesta página, mostramos como resolver problemas com o Firestore no modo Datastore.
Latência
A tabela abaixo descreve as possíveis causas do aumento da latência:
Causa da latência | Tipos de operações afetadas | Resolução |
---|---|---|
Tráfego prolongado que excede regra 500-50-5. | Leitura/gravação |
Para aumentos rápidos no tráfego, o modo Datastore tenta escala para atender ao aumento da demanda. Quando o modo Datastore escalona, a latência começa a diminuir. Pontos de acesso (altas taxas de leitura, gravação e exclusão para um intervalo estreito de entidades) limitam a capacidade de escalonamento do modo Datastore. Analise o design para escala e identifique pontos de acesso no aplicativo. |
Contenção, seja pela atualização de uma única entidade também ou com transações. | Leitura/gravação |
Reduza a taxa de gravação para entidades individuais. Revise isolamento e consistência de transações e como você usa as transações. |
Consultas lentas de mesclagem. | ler |
Por exemplo, consultas com vários filtros de igualdade (== ),
mas não respaldadas por índices compostos, podem resultar em consultas lentas de mesclagem.
Para melhorar o desempenho, adicione índices compostos a essas consultas.
Consulte
Como otimizar índices.
|
Leituras grandes que retornam muitas entidades. | ler | Use cursores de consulta para dividir leituras grandes. |
Excesso de exclusões recentes. | ler Isso afeta muito operações que listam tipos em um banco de dados. |
Se a latência for causada por muitas exclusões recentes, o problema será resolvido automaticamente após algum tempo. Se o problema não for resolvido, entre em contato com o suporte. |
Fanout de índice, especialmente para propriedades de matriz. | gravação | Revise como explodir índices e o uso de propriedades de matriz. |
Códigos de erro
Nesta seção, listamos problemas de configuração que você pode encontrar e fornecemos sugestões de como corrigir cada um deles.
DEADLINE_EXCEEDED
DEADLINE_EXCEEDED A deadline was exceeded on the server.
Para resolver esse problema, consulte o guia para solucionar problemas de latência.
ABORTED
As seguintes situações podem aumentar a quantidade de erros ABORTED
:
- Uma entidade que recebe muitas atualizações por segundo.
- Contenção de transações sobrepostas.
- Aumentos de tráfego que excedem a regra 500-50-5 ou encontram pontos de acesso.
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 Datastore mode to abort at least one in order to enforce serializability.
Para resolver o problema:
- Para aumentos rápidos no tráfego, o modo Datastore tenta escalonar automaticamente para atender ao aumento na demanda. Quando o modo do Datastore é escalonado, a latência começa a diminuir.
- Os pontos de acesso limitam a capacidade do modo Datastore de escalonamento vertical. Consulte Como criar em escala para identificar pontos de acesso.
- Analise a contenção de dados em transações e o uso das transações.
- Reduza a taxa de gravação para entidades individuais.
RESOURCE_EXHAUSTED
As seguintes situações podem causar erros RESOURCE_EXHAUSTED
:
Você excedeu a cota de nível gratuito, e o faturamento não está ativado para o projeto.
RESOURCE_EXHAUSTED Some resource has been exhausted, perhaps a per-user quota, or perhaps the entire file system is out of space.
Para resolver o problema:
- Aguarde a redefinição diária da cota de nível gratuito ou ative o faturamento do projeto.
INVALID_ARGUMENT
As seguintes situações podem causar erros INVALID_ARGUMENT
:
- A tentativa de confirmar uma entidade com um valor de propriedade indexed maior que 1.500 bytes. Esse limite se aplica à codificação UTF-8 do valor da propriedade.
- Tentar confirmar uma entidade com valores de propriedade não indexados maiores de 1.048.487 bytes (1 MiB - 89 bytes). Esse limite se aplica à soma dos valores de propriedade em uma entidade. Por exemplo, quatro propriedades de 256 KiB cada uma excedem o limite.
1.500 bytes (indexados) e 1.048.487 bytes (não indexados) são limites para valores de propriedade. Não é possível ultrapassar esses limites, e eles não são cotas que podem ser ajustadas.
INVALID_ARGUMENT: The value of property property-name is longer than 1500 bytes
ou
INVALID_ARGUMENT: The value of property property_name is longer than 1048487 bytes
Para resolver o problema:
- Para valores de propriedade indexados, divida o em várias propriedades. Se possível, crie uma propriedade não indexada e mover os dados que não precisam ser indexados para .
- Para valores de propriedade não indexados, divida a propriedade em várias propriedades ou implementar a compactação do valor da propriedade.