Se o uso de memória da sua instância Tair (Redis OSS-compatible) subir repentinamente para próximo de 100%, use este guia para identificar a causa e resolver o problema.
Causas comuns
Um pico súbito de memória tem uma de quatro causas. Use o indicador-chave em cada linha para identificar qual delas se aplica ao seu caso.
|
Causa |
Indicador-chave |
|
O tráfego de entrada e o QPS de escrita sobem junto com o uso de memória |
|
|
A contagem de conexões sobe junto com o uso de memória |
|
|
O uso de largura de banda atinge 100%; a memória de |
|
|
|
Grande volume de novos dados gravados
Uma entrada rápida de novos dados aumenta diretamente o consumo de memória.
Diagnosticar
Na página Performance Monitor, verifique o tráfego de entrada e as consultas de escrita por segundo (QPS). Se ambas as métricas seguirem a mesma tendência que o uso de memória, o pico é causado por um grande volume de novos dados.
Resolver
Defina valores de time-to-live (TTL) adequados nas chaves para expirar automaticamente os dados que não são mais necessários. Como alternativa, exclua manualmente as chaves desnecessárias.
Aumente a capacidade de memória da instância. Para obter detalhes, consulte Alterar as configurações de uma instância.
Se a instância for do tipo padrão e o uso de memória continuar elevado após o aumento de capacidade, faça upgrade para uma instância de cluster. Instâncias de cluster distribuem os dados entre múltiplos shards, reduzindo a pressão de memória em cada shard. Para obter detalhes, consulte Alterar as configurações de uma instância.
Aumento súbito de novas conexões
Cada conexão de cliente reserva memória para seus buffers de entrada e saída. Um aumento repentino no número de conexões provoca uma elevação correspondente no uso total de memória.
Diagnosticar
Na página Performance Monitor, verifique o número de conexões. Se a contagem de conexões subir acentuadamente junto com o uso de memória, o aumento súbito de conexões é a causa.
Resolver
Verifique se há vazamentos de conexão na sua aplicação.
Configure um timeout de conexão para fechar automaticamente as conexões ociosas. Para obter detalhes, consulte Especificar um período de timeout para conexões de clientes.
Tráfego em rajada causando acúmulo em buffer
Quando um acesso em rajada gera tráfego que excede a largura de banda de rede da instância, os dados de entrada e saída se acumulam nos buffers correspondentes. Esse acúmulo consome memória adicional além do armazenamento normal de dados.
Diagnosticar
Verifique se o uso de tráfego de entrada e saída atingiu 100%.
-
Execute
MEMORY STATSe confirme seclients.normalocupa uma quantidade excessiva de memória.Notaclients.normalinforma a memória total consumida pelos buffers de entrada e saída em todas as conexões normais de clientes. Um valor elevado confirma que o acúmulo em buffer está causando o pico de memória.
Resolver
Identifique a causa do tráfego em rajada.
Aumente a largura de banda de rede da instância. Para obter detalhes, consulte Aumentar manualmente a largura de banda de uma instância e Ativar o dimensionamento automático de largura de banda.
Faça upgrade das especificações da instância para garantir capacidade de buffer suficiente. Para obter detalhes, consulte Alterar as configurações de uma instância.
Cliente lento causando acúmulo no buffer de saída
Quando um cliente não consegue consumir respostas com rapidez suficiente, os dados não entregues se acumulam no buffer de saída do lado do servidor. O Redis aloca memória para cada resposta em fila, e esse volume pode crescer consideravelmente quando os clientes ficam para trás.
Diagnosticar
No redis-cli, execute MEMORY DOCTOR e verifique o valor de big_client_buf. Se big_client_buf for igual a 1, pelo menos um cliente tem um buffer de saída superdimensionado que consome memória significativa.
Resolver
Execute CLIENT LIST e localize clientes com valor elevado de omem. O campo omem informa a memória utilizada pelo buffer de saída de um cliente. Verifique se o cliente identificado apresenta problemas de desempenho que o impedem de consumir respostas com rapidez suficiente.