Compartilhar via


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.

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:

  1. O uso de memória está próximo do limite máximo de memória para o cache ou
  2. 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:

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.

Informações adicionais