Solução de problemas

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 escalonar automaticamente para atender ao aumento na demanda. Quando o modo Datastore é escalonado, a latência começa a diminuir.

Os pontos de acesso (altas taxas de leitura, gravação e exclusão para um intervalo de entidades estreito) limitam a capacidade de escalonamento do modo Datastore. Analise o design para escala e identifique pontos de acesso no aplicativo.

Contenção, seja para atualizar uma única entidade com muita frequência ou de transações. Leitura/gravação

Reduza a taxa de gravação para entidades individuais.

Revise o isolamento e a 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. read
Isso afeta muito as 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 índices de expansão 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 escalonar verticalmente. 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:

INVALID_ARGUMENT

As seguintes situações podem causar erros INVALID_ARGUMENT:

  • Tentativa de confirmar uma entidade com um valor de propriedade indexado maior que 1.500 bytes. Esse limite se aplica à codificação UTF-8 do valor da propriedade.
  • Tentativa de confirmar uma entidade com valores de propriedade não indexados maiores que 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 indexada, divida a propriedade em várias propriedades. Se possível, crie uma propriedade não indexada e mova os dados que não precisam ser indexados para a propriedade não indexada.
  • Para valores de propriedade não indexados, divida a propriedade em várias propriedades ou implemente a compactação para o valor da propriedade.