Redis OSS 스냅샷을 생성할 수 있는 충분한 메모리가 있는지 확인 - 아마존 ElastiCache (레디 스 OSS)

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Redis OSS 스냅샷을 생성할 수 있는 충분한 메모리가 있는지 확인

버전 2.8.22 이상의 Redis OSS 스냅샷 및 동기화

Redis OSS 2.8.22에는 동기화 및 저장 중에 스왑 사용량을 늘리지 않고도 애플리케이션 사용에 더 많은 메모리를 할당할 수 있는 포크 없는 저장 프로세스가 도입되었습니다. 자세한 정보는 동기화 및 백업 구현 방법을 참조하세요.

버전 2.8.22 이전의 Redis OSS 스냅샷 및 동기화

ElastiCache (Redis OSS) 를 사용할 경우 Redis OSS는 다음과 같은 경우에 백그라운드 쓰기 명령을 호출합니다.

  • 백업을 위해 스냅샷을 생성하는 경우

  • 복제 그룹에서 기본을 사용하여 복제본을 동기화하는 경우

  • Redis OSS의 추가 전용 파일 기능 (AOF) 을 활성화하는 경우.

  • 복제본을 기본으로 승격하는 경우(기본/복제본 동기화 발생)

Redis OSS에서 백그라운드 쓰기 프로세스를 실행할 때마다 프로세스 오버헤드를 수용할 수 있는 충분한 가용 메모리가 있어야 합니다. 사용 가능한 메모리를 충분히 확보하지 못하면 프로세스가 실패합니다. 따라서 Redis OSS 클러스터를 생성할 때는 메모리가 충분한 노드 인스턴스 유형을 선택하는 것이 중요합니다.

백그라운드 쓰기 프로세스 및 메모리 사용량

백그라운드 쓰기 프로세스가 호출될 때마다 Redis OSS는 해당 프로세스를 포크합니다. Redis는 단일 스레드라는 점을 기억하십시오. 한 번의 포크로 데이터를 Redis OSS .rdb 스냅샷 파일의 디스크에 보관할 수 있습니다. 나머지 포크가 모든 읽기 및 쓰기 작업을 처리합니다. 스냅샷이 스냅샷이 되도록 모든 데이터 업데이트 및 추가는 데이터 영역과 분리된 사용 가능한 메모리 영역에 기록됩니다. point-in-time

사용 가능한 메모리가 충분하여 데이터가 계속 디스크에 쓰여지는 동안 모든 쓰기 작업을 기록할 수 있으면 메모리 부족 문제가 발생하지 않습니다. 다음과 같은 경우에 해당되며 메모리 부족 문제가 생기기 쉽습니다.

  • 애플리케이션이 여러 쓰기 작업을 수행하여 새로운 데이터나 업데이트된 데이터를 저장하기 위해 사용 가능한 메모리가 대량으로 필요합니다.

  • 새로운 데이터나 업데이트된 데이터를 쓸 사용 가능한 메모리가 거의 없습니다.

  • 디스크에 계속 쓰기 위해 시간이 오래 걸리는 큰 데이터 세트가 있어 많은 쓰기 작업이 필요합니다.

다음 다이어그램에서는 백그라운드 쓰기 프로세스를 실행할 때의 메모리 사용량을 보여줍니다.

이미지: 백그라운드 쓰기 도중 메모리 사용량 다이어그램.

백업이 성능에 미치는 영향에 대한 정보는 자체 설계된 클러스터 백업이 성능에 미치는 영향 섹션을 참조하세요.

Redis OSS가 스냅샷을 수행하는 방법에 대한 자세한 내용은 http://redis.io 을 참조하십시오.

리전 및 가용 영역에 대한 자세한 내용은 리전 및 가용 영역 선택 섹션을 참조하세요.

백그라운드 쓰기를 실행할 때 메모리 부족 방지

BGSAVE또는 BGREWRITEAOF 와 같은 백그라운드 쓰기 프로세스가 호출될 때마다 프로세스가 실패하지 않도록 하려면 프로세스 중 쓰기 작업에 소비되는 메모리보다 많은 메모리가 있어야 합니다. 최악의 시나리오는 백그라운드 쓰기 작업 중에 모든 Redis OSS 레코드가 업데이트되고 일부 새 레코드가 캐시에 추가되는 것입니다. 따라서 2.8.22 이전의 Redis OS 버전에는 50 (50%) reserved-memory-percent 으로, Redis OSS 버전 2.8.22 이상에서는 25 (25%) 로 설정하는 것이 좋습니다.

maxmemory 값은 데이터 및 작업 오버헤드에 사용할 수 있는 메모리를 나타냅니다. 기본 파라미터 그룹에서 reserved-memory 파라미터를 수정할 수 없으므로 클러스터의 사용자 지정 파라미터 그룹을 생성해야 합니다. 의 기본값은 reserved-memory 0이며, 이를 통해 Redis OSS는 데이터와 함께 최대 메모리를 모두 소비하므로 백그라운드 쓰기 프로세스와 같은 다른 용도에 사용할 메모리가 너무 적을 수 있습니다. 노드 인스턴스 유형에 따른 maxmemory 값은 Redis OSS 노드 유형별 파라미터 섹션을 참조하세요.

reserved-memory파라미터를 사용하여 Redis OSS가 박스에서 사용하는 메모리 양을 줄일 수도 있습니다.

의 Redis별 파라미터에 대한 자세한 내용은 을 참조하십시오. ElastiCache 레디 스 OSS 관련 매개 변수

파라미터 그룹 생성 및 수정에 대한 정보는 파라미터 그룹 생성파라미터 그룹 수정 섹션을 참조하세요.