Temos tido problemas contínuos com a troca de instância do ElastiCache Redis. A Amazon parece ter algum monitoramento interno bruto, que notifica a troca de picos de uso e simplesmente reinicia a instância do ElastiCache (perdendo assim todos os nossos itens em cache). Aqui está o gráfico de BytesUsedForCache (linha azul) e SwapUsage (linha laranja) em nossa instância do ElastiCache nos últimos 14 dias:
Você pode ver o padrão de crescente uso de swap que parece acionar reinicializações de nossa instância do ElastiCache, em que perdemos todos os nossos itens armazenados em cache (BytesUsedForCache cai para 0).
A guia 'Eventos de cache' do painel do ElastiCache possui entradas correspondentes:
ID da fonte | Tipo | Data Evento
ID da instância de cache | cluster de cache | Ter 22 de setembro 07:34:47 GMT-400 2015 | Nó de cache 0001 reiniciado
ID da instância de cache | cluster de cache | Ter 22 de setembro 07:34:42 GMT-400 2015 | Erro ao reiniciar o mecanismo de cache no nó 0001
ID da instância de cache | cluster de cache | Dom 20 de setembro 11:13:05 GMT-400 2015 | Nó de cache 0001 reiniciado
ID da instância de cache | cluster de cache | Qui 17 de setembro 22:59:50 GMT-400 2015 | Nó de cache 0001 reiniciado
ID da instância de cache | cluster de cache | Qua 16 de setembro 10:36:52 GMT-400 2015 | Nó de cache 0001 reiniciado
ID da instância de cache | cluster de cache | Ter 15 de setembro 05:02:35 GMT-400 2015 | Nó de cache 0001 reiniciado
(cortar entradas anteriores)
SwapUsage - no uso normal, nem o Memcached nem o Redis devem executar swaps
Nossas configurações relevantes (não padrão):
- Tipo de instância:
cache.r3.2xlarge
maxmemory-policy
: allkeys-lru (estávamos usando o volátil-lru padrão anteriormente sem muita diferença)maxmemory-samples
: 10reserved-memory
: 2500000000- Verificando o comando INFO na instância, vejo
mem_fragmentation_ratio
entre 1,00 e 1,05
Entramos em contato com o suporte da AWS e não recebemos muitos conselhos úteis: sugeriram aumentar ainda mais a memória reservada (o padrão é 0 e temos 2,5 GB reservados). Como não temos replicação ou instantâneos configurados para esta instância de cache, acredito que nenhum BGSAVE deve estar ocorrendo e causando uso adicional de memória.
O maxmemory
limite de um cache.r3.2xlarge é de 62495129600 bytes e, embora atingimos reserved-memory
rapidamente nosso limite (menos o nosso ), parece-me estranho que o sistema operacional host se sinta pressionado a usar tanta troca aqui e com tanta rapidez, a menos que A Amazon aumentou as configurações de troca do SO por algum motivo. Alguma idéia de por que estaríamos causando tanto uso de troca no ElastiCache / Redis ou solução alternativa que poderíamos tentar?
fonte
SCAN
trabalho na resposta ainda está provocando limpeza. Agora, a AWS oferece recursos do Redis Cluster , que eu aposto que ajudariam para uso pesado.Eu sei que isso pode ser antigo, mas eu me deparei com isso na documentação do aws.
https://aws.amazon.com/elasticache/pricing/ Eles afirmam que o r3.2xlarge possui 58,2 gb de memória.
https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ParameterGroups.Redis.html Eles afirmam que a memória máxima do sistema é 62gb (é quando a política de memória máxima entra em ação) e que não pode ser alterada . Parece que não importa com o Redis na AWS, trocaremos ..
fonte
62495129600
bytes, que é exatamente 58,2 GiB. A página de preços que você vinculou tem memória em unidades de GiB, não em GB. Omaxmemory
parâmetro não é modificável, presumivelmente porque há melhores botões fornecidos pelo Redis, comoreserved-memory
(embora isso não me ajudou ...), que são modificáveis, e não AWS não quero que você misconfiguring o nó por exemplo dizendo Redis para use mais memória do que a VM Elasticache realmente possui.