충분한 메모리를 확보하여 Redis 스냅샷 생성
버전 2.8.22 이상의 Redis 스냅샷 및 동기화
Redis 2.8.22에는 동기화 및 저장을 수행하는 동안 스왑 사용량 증가 없이 애플리케이션 사용에 추가 메모리를 할당할 수 있는 forkless 저장 프로세스가 도입되었습니다. 자세한 정보는 동기화 및 백업 구현 방법을 참조하십시오.
버전 2.8.22 이전의 Redis 스냅샷 및 동기화
Redis ElastiCache를 사용하여 작업할 때 다음과 같이 많은 경우에 Redis가 백그라운드 쓰기 명령을 호출합니다.
백업을 위해 스냅샷을 생성하는 경우
복제 그룹에서 기본을 사용하여 복제본을 동기화하는 경우
Redis에 AOF(append-only file) 기능을 활성화하는 경우
복제본을 기본으로 승격하는 경우(기본/복제본 동기화 발생)
Redis에서 백그라운드 쓰기 프로세스를 실행할 때마다 사용 가능한 메모리가 충분해야 프로세스 오버헤드를 감당할 수 있습니다. 사용 가능한 메모리를 충분히 확보하지 못하면 프로세스가 실패합니다. 그러므로 Redis 클러스터를 생성할 때 메모리가 충분한 노드 인스턴스 유형을 선택해야 합니다.
백그라운드 쓰기 프로세스 및 메모리 사용량
백그라운드 쓰기 프로세스가 호출될 때마다 Redis에서 해당 프로세스를 포크합니다. Redis는 단일 스레드입니다. 포크 하나가 Redis .rdb 스냅샷 파일에서 데이터를 디스크에 계속 쓰고 나머지 포크가 모든 읽기 및 쓰기 작업을 처리합니다. 스냅샷이 특정 시점 스냅샷이 되도록 모든 데이터 업데이트 및 추가가 데이터 영역과 별도의 사용 가능한 메모리 영역에 기록됩니다.
사용 가능한 메모리가 충분하여 데이터가 계속 디스크에 쓰여지는 동안 모든 쓰기 작업을 기록할 수 있으면 메모리 부족 문제가 발생하지 않습니다. 다음과 같은 경우에 해당되며 메모리 부족 문제가 생기기 쉽습니다.
-
애플리케이션이 여러 쓰기 작업을 수행하여 새로운 데이터나 업데이트된 데이터를 저장하기 위해 사용 가능한 메모리가 대량으로 필요합니다.
-
새로운 데이터나 업데이트된 데이터를 쓸 사용 가능한 메모리가 거의 없습니다.
-
디스크에 계속 쓰기 위해 시간이 오래 걸리는 큰 데이터 세트가 있어 많은 쓰기 작업이 필요합니다.
다음 다이어그램에서는 백그라운드 쓰기 프로세스를 실행할 때의 메모리 사용량을 보여줍니다.

백업이 성능에 미치는 영향에 대한 정보는 백업의 성능 영향 섹션을 참조하세요.
Redis에서 스냅샷을 수행하는 방법에 대한 자세한 내용은 http://redis.io
리전 및 가용 영역에 대한 자세한 내용은 리전 및 가용 영역 선택 섹션을 참조하세요.
백그라운드 쓰기를 실행할 때 메모리 부족 방지
BGSAVE 또는 BGREWRITEAOF와 같은 백그라운드 쓰기 프로세스를 호출할 때마다 프로세스가 실패하지 않도록 하려면 프로세스 중에 쓰기 작업에 사용되는 것보다 많은 메모리가 있어야 합니다. 최악의 시나리오는 백그라운드 쓰기 작업 중에 모든 Redis 레코드가 업데이트되고 일부 새로운 레코드가 캐시에 추가되는 것입니다. 따라서 2.8.22 이전의 Redis 버전에서는 reserved-memory-percent
를 50(50%)으로 설정하고 Redis 버전 2.8.22 이상에서는 25(25%)로 설정하는 것이 좋습니다.
maxmemory
값은 데이터 및 작업 오버헤드에 사용할 수 있는 메모리를 나타냅니다. 기본 파라미터 그룹에서 reserved-memory
파라미터를 수정할 수 없으므로 클러스터의 사용자 지정 파라미터 그룹을 생성해야 합니다. reserved-memory
의 기본값은 0이며 Redis가 데이터에 모든 maxmemory를 소비할 수 있어 백그라운드 쓰기 프로세스와 같은 다른 용도로 사용할 수 있는 메모리가 거의 없을 수 있음을 의미합니다. 노드 인스턴스 유형에 따른 maxmemory
값은 Redis 노드 유형별 파라미터 섹션을 참조하세요.
reserved-memory
파라미터를 사용하여 상자에서 Redis가 사용하는 메모리 양을 줄일 수도 있습니다.
ElastiCache의 Redis 관련 파라미터에 대한 자세한 내용은 Redis 특정 파라미터 섹션을 참조하세요.
파라미터 그룹 생성 및 수정에 대한 정보는 파라미터 그룹 생성 및 파라미터 그룹 수정 섹션을 참조하세요.