Estou vendo um aumento na atividade de troca em minhas instâncias do Amazon ElastiCache. Como resolvo isso?
Breve descrição
O ElastiCache é executado no sistema operacional (SO) Linux. O comportamento de troca é controlado pelo sistema operacional e é influenciado por fatores como versão do SO ou padrões de atividade. É um comportamento esperado que as instâncias experimentem flutuações no uso de troca.
Problemas de troca ocorrem quando não há memória de acesso aleatório (RAM) disponível suficiente quando o sistema está movendo páginas entre o disco e a RAM.
O sistema operacional Linux realoca proativamente as páginas de memória para troca por dois motivos principais:
- Um nó do ElastiCache está sob pressão de memória
- O Linux troca a memória acessada com pouca frequência para o disco
Resolução
Um nó do ElastiCache está sob pressão de memória
Se o nó de cache usar mais memória do que a instância tem disponível, o Linux trocará os dados da memória para o disco para liberar espaço de memória para uso. Uma métrica do FreeableMemory CloudWatch igual a zero ou uma métrica SwapUsage maior que a métrica FreeableMemory indica um nó que está sob pressão de memória.
Como oRedis e oMemcached estão em caches de memória, a troca torna seu aplicativo mais lento.
Se você perceber que um nó está trocando devido à pressão da memória, aumente a escala verticalmente para um tipo de nó de cache maior. Caso contrário, defina um parâmetro de memória reservada para o Redis ou um parâmetro de sobrecarga de conexão para o Memcached.
O Linux troca a memória acessada com pouca frequência para o disco
A troca pode ser usada quando um nó do ElastiCache não está sob pressão de memória porque o sistema operacional Linux move proativamente páginas de memória que não são usadas com frequência para troca para aumentar a eficiência da memória. Esse uso é um comportamento normal do kernel e não implica leitura e gravação ativas para troca.
É uma prática recomendada revisar a métrica swapUsage para verificar se a quantidade de troca usada não excede 300 MB.
Informações relacionadas
Quais métricas devo monitorar? (Redis)
Quais métricas devo monitorar? (Memcached)