Partilhar via


Resolver problemas do servidor da Cache do Azure para Redis

Esta seção discute a solução de problemas causados por condições em um servidor Redis do Cache do Azure ou em qualquer uma das máquinas virtuais que o hospedam.

Nota

Várias das etapas de solução de problemas neste guia incluem instruções para executar comandos Redis e monitorar várias métricas de desempenho. Para obter mais informações e instruções, consulte os artigos na seção Informações adicionais.

Carga do servidor elevada

Uma carga elevada no servidor significa que o servidor Redis está ocupado e não consegue dar resposta a pedidos, o que provoca os tempos limite excedidos. Verifique a métrica Carga do servidor no cache selecionando Monitoramento no menu Recurso à esquerda. Você vê o gráfico Carga do servidor no painel de trabalho em Insights. Ou adicione um conjunto de métricas à Carga do Servidor em Métricas.

A seguir estão algumas opções a serem consideradas para alta carga de servidor.

Aumentar ou reduzir a escala

Dimensione para adicionar mais fragmentos, para que a carga seja distribuída em vários processos Redis. Além disso, considere escalar para um tamanho de cache maior com mais núcleos de CPU. Para obter mais informações, consulte Perguntas frequentes sobre planejamento do Cache do Azure para Redis.

Mudanças rápidas no número de conexões de clientes

Para obter mais informações, consulte Evitar picos de conexão do cliente.

Comandos caros ou de longa duração

Esta secção foi deslocada. Para obter mais informações, consulte Comandos de execução longa.

Dimensionamento

As operações de dimensionamento consomem muita CPU e memória, pois podem envolver a movimentação de dados entre nós e a alteração da topologia do cluster. Para obter mais informações, consulte Dimensionamento.

Manutenção de servidores

Se o Cache Redis do Azure tiver passado 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 aumentar devido ao aumento das conexões. Você pode tentar reinicializar seus aplicativos cliente para que todas as conexões de cliente sejam recriadas e redistribuídas entre os dois nós.

Elevada utilização da memória

A pressão da memória no servidor pode levar a vários problemas de desempenho que atrasam o processamento dos pedidos. Quando a pressão da memória ocorre, o sistema coloca os dados no disco, o que faz com que o sistema abrande significativamente.

Aqui estão algumas causas possíveis da pressão da memória:

  • O cache é preenchido com dados perto de sua capacidade máxima
  • O servidor Redis está vendo alta fragmentação de memória

É provável que a fragmentação seja causada quando um padrão de carga está armazenando dados com alta variação de tamanho. Por exemplo, a fragmentação pode acontecer 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 caber nela, 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 for superior a used_memory_rss 1,5 vezes a used_memory métrica, há fragmentação na memória. A fragmentação pode causar problemas quando:

  1. O uso de memória está próximo ao limite máximo de memória para o cache, ou
  2. UsedMemory_RSS é maior do 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 fará um failover para tentar recuperar a memória RSS (Resident set Size).

Redis expõe duas estatísticas, used_memory e used_memory_rss, através do comando INFO que pode ajudá-lo a identificar esse problema. Você pode visualizar essas métricas usando o portal.

Valide se os maxmemory-reserved valores e maxfragmentationmemory-reserved estão definidos adequadamente.

Há várias alterações possíveis que pode fazer para ajudar a manter um bom estado de funcionamento da utilização da memória:

  • Configure uma política de memória e defina tempos de expiração em suas chaves. Esta política pode não ser suficiente se tiver fragmentação.
  • Configure um valor maxmemory-reserved que seja grande o suficiente para compensar a fragmentação da memória.
  • Crie alertas sobre métricas, por exemplo, sobre a memória utilizada, para ser notificado antecipadamente sobre potenciais impactos.
  • Dimensione para um tamanho de cache maior com mais capacidade de memória. Para obter mais informações, consulte Perguntas frequentes sobre planejamento do Cache do Azure para Redis.

Para obter recomendações sobre gerenciamento de memória, consulte Práticas recomendadas para gerenciamento de memória.

Comandos de execução prolongada

Esta secção foi deslocada. Para obter mais informações, consulte Comandos de execução longa.

Limitação da largura de banda do lado do servidor

Esta secção foi deslocada. Para obter mais informações, consulte Limitação de largura de banda de rede.

Informações adicionais