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 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:

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.