ElastiCache Redis 인스턴스 스와핑에 계속 문제가 있습니다. Amazon은 스왑 사용량 급증을 감지하고 ElastiCache 인스턴스를 다시 시작하여 캐시 된 모든 항목을 잃어 버리는 일부 내부 모니터링 기능을 갖추고있는 것으로 보입니다. 지난 14 일 동안 ElastiCache 인스턴스에서 BytesUsedForCache (파란색 선) 및 SwapUsage (오렌지색 선) 차트는 다음과 같습니다.
스왑 사용량 증가 패턴이 ElastiCache 인스턴스의 재부팅을 트리거하는 것처럼 보이며 모든 캐시 된 항목이 손실됩니다 (BytesUsedForCache가 0으로 떨어짐).
ElastiCache 대시 보드의 '캐시 이벤트'탭에는 해당 항목이 있습니다.
소스 ID | 타입 | 날짜 | 행사
캐시 인스턴스 ID | 캐시 클러스터 | 9 월 22 일 화요일 07:34:47 GMT-400 2015 | 캐시 노드 0001이 다시 시작되었습니다.
캐시 인스턴스 ID | 캐시 클러스터 | 9 월 22 일 화요일 07:34:42 GMT-400 2015 | 노드 0001에서 캐시 엔진을 다시 시작하는 중 오류가 발생했습니다.
캐시 인스턴스 ID | 캐시 클러스터 | 일 9 월 20 일 11:13:05 GMT-400 2015 | 캐시 노드 0001이 다시 시작되었습니다.
캐시 인스턴스 ID | 캐시 클러스터 | 목 9 월 17 일 22:59:50 GMT-400 2015 | 캐시 노드 0001이 다시 시작되었습니다.
캐시 인스턴스 ID | 캐시 클러스터 | 수 9 월 16 일 10:36:52 GMT-400 2015 | 캐시 노드 0001이 다시 시작되었습니다.
캐시 인스턴스 ID | 캐시 클러스터 | 9 월 15 일 화요일 05:02:35 GMT-400 2015 | 캐시 노드 0001이 다시 시작되었습니다.
(이전 항목 스니핑)
아마존 주장 :
SwapUsage- 정상적인 사용에서 Memcached 또는 Redis는 스왑을 수행하지 않아야합니다.
관련 (기본이 아닌) 설정 :
- 인스턴스 유형 :
cache.r3.2xlarge
maxmemory-policy
: allkeys-lru (우리는 이전에 큰 차이없이 기본 volatile-lru를 사용 했었습니다)maxmemory-samples
: 10reserved-memory
: 2500000000- 인스턴스에서 INFO 명령을 확인하면
mem_fragmentation_ratio
1.00에서 1.05 사이입니다.
AWS 지원팀에 연락하여 유용한 조언을 얻지 못했습니다. 예약 메모리를 훨씬 더 높이는 것이 좋습니다 (기본값은 0이고 예약 된 용량은 2.5GB 임). 이 캐시 인스턴스에 대해 복제 또는 스냅 샷을 설정하지 않았으므로 BGSAVE가 발생하지 않아 추가 메모리 사용이 발생하지 않을 것이라고 생각합니다.
maxmemory
cache.r3.2xlarge의 캡은 62,495,129,600 바이트이며, 우리는 우리의 뚜껑을 명중 (마이너스 우리하더라도 reserved-memory
) 빠르게, 그것은하지 않는 한, 이렇게 빨리 호스트 운영 체제가 여기에 너무 많은 스왑을 사용하여 압력을 느낄 것이라고 나에게 이상한 것, 그리고 아마존은 어떤 이유로 OS 스왑 피스 설정을 높였습니다. 왜 우리가 ElastiCache / Redis에서 스왑 사용량을 많이 발생 시켰는지, 또는 해결 방법이 있습니까?