Solucionar problemas de servidor do Cache do Azure para Redis
Esta seção aborda a solução de problemas causados por condições em um Cache do Azure para Redis ou em qualquer uma das máquinas virtuais que o hospedam.
- Carga do servidor alta
- Alto uso da memória
- Comandos de execução longa
- Limitação de largura de banda do lado do servidor
Observação
Várias das etapas de solução de problemas neste guia incluem instruções para executar comandos do Redis e monitorar diversas métricas de desempenho. Para obter mais informações, consulte os artigos na seção Informações adicionais .
Carga do servidor alta
Alta carga do servidor significa que o servidor Redis está ocupado e não consegue acompanhar as solicitações, fazendo com que tempos limite sejam atingidos. Verifique a métrica Carga do Servidor no cache selecionando Monitorar no menu de recursos à esquerda. Você verá o grafo Carga do Servidor no painel de trabalho em Insights. Ou adicione uma métrica definida como Carga do Servidor em Métricas.
A seguir estão algumas opções a considerar para uma carga alta do servidor.
Escalar verticalmente ou horizontalmente
Escale horizontalmente para adicionar mais fragmentos, de modo que a carga seja distribuída entre vários processos do Redis. Além disso, considere escalar verticalmente para um tamanho de cache maior, com mais núcleos de CPU. Para obter mais informações, confira Perguntas frequentes de planejamento do Cache do Azure para Redis.
Alterações rápidas no número de conexões de cliente
Para obter mais informações, confira Evitar picos de conexão de cliente.
Comandos de execução prolongada ou caros
Esta seção foi movida. Para obter mais informações, confira Comandos de execução prolongada.
Scaling
As operações de dimensionamento fazem uso intensivo de CPU e memória, pois podem envolver a movimentação de dados pelos nós e a alteração da topologia do cluster. Para obter mais informações, confira Dimensionamento.
Manutenção do servidor
Se o Cache do Azure para Redis passou por um failover, todas as conexões de cliente do nó que ficou inativo serão transferidas para o nó que ainda está em execução. A carga do servidor pode enfrentar um pico devido ao aumento de conexões. Você pode tentar reinicializar seus aplicativos cliente para que todas as conexões de cliente possam ser recriadas e redistribuídas entre os dois nós.
Alto uso da memória
A demanda de memória no servidor pode levar a vários problemas de desempenho que atrasam o processamento de solicitações. Quando a demanda de memória surge, o sistema faz a paginação de dados para o disco, o que faz com que o sistema fique significativamente mais lento.
Estas são algumas causas possíveis de demanda de memória:
- O cache é preenchido com dados próximos à sua capacidade máxima
- O servidor Redis está enfrentando uma alta fragmentação de memória
A fragmentação provavelmente será causada quando um padrão de carga estiver armazenar dados com alta variação de tamanho. Por exemplo, a fragmentação pode ocorrer quando os dados são distribuídos em 1 KB e 1 MB de tamanho. Quando uma chave de 1 KB é excluída da memória existente, uma chave de 1 MB não pode se ajustar a ela, causando fragmentação. Da mesma forma, se a chave de 1 MB for excluída e a chave de 1,5 MB for adicionada, ela não poderá caber na memória recuperada existente. Isso causa memória livre não utilizada e resulta em mais fragmentação.
Se o valor used_memory_rss
for maior que 1,5 vezes a métrica used_memory
, haverá fragmentação na memória. A fragmentação pode causar problemas quando:
- O uso de memória está próximo do limite máximo de memória para o cache ou
UsedMemory_RSS
é maior que o limite máximo de memória, potencialmente resultando em falha de página na memória.
Se um cache estiver fragmentado e estiver sendo executado sob alta pressão de memória, o sistema executará um failover para tentar recuperar a memória RSS (Tamanho do Conjunto Residente).
O Redis expõe duas estatísticas, used_memory
e used_memory_rss
, por meio do o comando INFO que pode ajudá-lo a identificar esse problema. Você pode exibir essas métricas usando o Portal.
Verifique se os valores maxmemory-reserved
e maxfragmentationmemory-reserved
estão definidos adequadamente.
Há várias alterações que você pode fazer para ajudar a manter a integridade do uso de memória:
- Configurar uma política de memória e definir tempos de expiração em suas chaves. Essa política poderá não ser suficiente se você tiver fragmentação.
- Configurar um valor para maxmemory-reserved que seja grande o suficiente para compensar pela fragmentação da memória.
- Crie alertas em métricas, como memória usada, para ser notificado com antecedência sobre possíveis impactos.
- Dimensione para um tamanho de cache maior com mais capacidade de memória. Para obter mais informações, confira Perguntas frequentes de planejamento do Cache do Azure para Redis.
Para recomendações sobre gerenciamento de memória, confira Práticas recomendadas para gerenciamento de memória.
Comandos de execução longa
Esta seção foi movida. Para obter mais informações, confira Comandos de execução prolongada.
Limitação de largura de banda do lado do servidor
Esta seção foi movida. Para obter mais informações, confira Limitação de largura de banda de rede.