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 de tráfego, o modo Datastore tenta fazer o escalonamento automático para atender ao aumento da demanda. Quando o modo Datastore é escalonado, a latência começa a diminuir.

Os pontos de acesso (taxas altas 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 pela atualização de uma única entidade com muita frequência ou por transações. Leitura/gravação

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

Revise o isolamento e a consistência das 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 para essas consultas. Consulte Como otimizar índices.
Leituras grandes que retornam muitas entidades. leitura Use cursores de consulta para dividir leituras grandes.
Excesso de exclusões recentes. read
Isso afeta muito as operações que listam os 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 Analise índices em explosã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 de tráfego, o modo Datastore tenta fazer o escalonamento automaticamente para atender ao aumento da demanda. Quando o modo Datastore é escalonado, a latência começa a diminuir.
  • Os pontos de acesso limitam a capacidade de escalonar verticalmente do modo Datastore. Consulte Como projetar para 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 situações a seguir podem causar erros INVALID_ARGUMENT:

  • 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.
  • Tentativa de confirmar uma entidade com valores de propriedade não indexados superiores a 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 exceder 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 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 na 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.