우선 그래프를 보시면 파란색 그래프가 뚝 떨어지면서, 주황색 그래프가 올라가는 것을 확인할 수 있습니다.
Freeable Memory : RDS 인스턴스에서 사용할 수 있는 가용 메모리 (인스턴스가 사용할 수 있는 물리메모리)
SwapUsage : Swap은 할당된 물리 메모리 외에 추가적으로 사용할 수 있는 메모리
할당 받은 물리 메모리를 모두 사용 하였을 때, Swap 메모리를 사용하게 됩니다.
이럴 경우 여러가지 문제점이 있을 수 있지만, Redis의 경우에는 메모리의 일정 비율이 백업 및 장애 조치를 위해서
작업이 예약되어 있습니다.
Redis 버전 2.8.22 이상에서는 총 메모리의 25%를 예약하는 것이 Best Practice입니다.
이를 규제하는 파라미터는 reserved-memory (2017년 3월 16일 이전에 ElastiCache를 시작한 고객의 경우)
또는 reserved-memory-percent(2017년 3월 16일 또는 그 이후에 ElastiCache를 시작한 고객의 경우)입니다.
redis-cli를 통해서 하기 명령어를 실행하시면, maxmemory를 확인하실 수 있습니다.
info memory
maxmemory-policy 혹은 maxmemory를 사용하시면, allkeys-lru를 사용하여 lfu를 사용하여 키를 삭제하는 등의 정책을 세팅할 수 있습니다. 별도의 설정 없이 메모리를 무제한으로 사용하게 된다면 메모리 부족으로 인한 OOM(Out Of Memory) 에러나 서버 종료 등의 이슈가 생길 수 있습니다.
* 제거되지 않도록 설정되어 있고 메모리 제한이 있을 경우 새 항목이 추가되지 않으므로 좋지 않습니다.
메모리 제한이 없고, 잘못된 정책이 정의된 경우 RAM 최대값을 초과하여 서버를 종료할 수 있습니다.
또한 세션과 MUC가 동일한 캐시에 있는 경우 하나가 다른 캐시에 발생합니다.
Redis가 캐시에서 항목을 임의로 삭제하기 시작하면 다른 사용자의 세션이 포함될 수 있습니다.
또한 keys *와 같은 명령어를 수행하시는 프로세스가 많을 경우, 전체 프로세스에 영향을 미칠 수 있기 때문에, 해당 내용은 피하여 설정하시기 바랍니다.
관련 링크 : https://docs.redis.com/latest/ri/memory-optimizations/
https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/BestPractices.BGSAVE.html
https://moodle.org/mod/forum/discuss.php?d=413731