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