Solução de problemas

Nesta página, mostramos como resolver problemas com o Firestore.

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 Firestore tenta escalonar automaticamente para atender ao aumento na demanda. Quando o Firestore faz o escalonamento, a latência começa a diminuir.

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

Contenção, seja para atualizar um único documento com muita frequência ou de transações. Leitura/gravação

Mantenha a taxa de gravação em documentos individuais abaixo de uma gravação por segundo.

Revise a contenção de dados em transaçõesr 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 o motivo 3 em Por que minha consulta do Firestore está lenta?
Leituras grandes que retornam muitos documentos. ler Use a paginação para dividir leituras grandes.
Excesso de exclusões recentes. read
Isso afeta muito as operações que listam coleções 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.
Adicionar e remover listeners muito rápido. consultas de listener em tempo real Veja as práticas recomendadas para atualizações em tempo real.
Detectar documentos grandes ou uma consulta com muitos resultados. consultas de listener em tempo real Veja as práticas recomendadas para atualizações em tempo real
Fanout de índice, especialmente para campos de matriz e de mapa. write Analise o uso de campos de matriz e de mapa. Nos campos do mapa, é possível desativar a indexação de subcampos.
Gravações grandes e gravações em lote. write

Tente reduzir o número de gravações em cada gravação em lote. As gravações em lote são atômicas, e muitas gravações em um único lote podem aumentar a latência e a contenção. Por exemplo, um lote de 10 gravações tem desempenho melhor do que um lote de 500 gravações.

Para entrada de dados em massa em que você não precisa de atomicidade, use uma biblioteca de cliente do servidor com gravações individuais em paralelo. As gravações em lote apresentam melhor desempenho do que aquelas em série, mas não melhor do que as executadas em paralelo.

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

Os seguintes erros podem aumentar a quantidade de erros DEADLINE_EXCEEDED:

  • Um aumento na latência fez com que uma operação demore mais do que o prazo (60 segundos por padrão) para ser concluída.
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:

  • Exceder o limite de 1 gravação por segundo para um único documento.
  • 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 Firestore to abort at
least one in order to enforce serializability.

Para resolver o problema:

  • Para aumentos rápidos no tráfego, o Firestore tenta escalonar automaticamente para atender ao aumento na demanda. Quando o Firestore é escalonado, a latência começa a diminuir.
  • Os pontos de acesso limitam a capacidade do Firestore de escalonar verticalmente. Consulte a seção Como criar em escala para identificar pontos de acesso.
  • Analise a contenção de dados em transações e o uso das transações.
  • Mantenha a taxa de gravação em documentos individuais abaixo de uma gravação por segundo.

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.
  • Você excedeu 10.000 gravações no banco de dados ou o limite de capacidade de 10 MiB/s.
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.
  • Mantenha o uso abaixo do limite de 10.000 gravações do banco de dados.