Valkey 또는 Redis OSS 스냅샷을 생성하기에 충분한 메모리 확보 - Amazon ElastiCache

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

Valkey 또는 Redis OSS 스냅샷을 생성하기에 충분한 메모리 확보

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

Valkey는 스냅샷 및 동기화를 기본적으로 지원합니다. Redis OSS 2.8.22에서는 동기화 및 저장 중에 스왑 사용량을 늘리지 않고 애플리케이션 사용에 더 많은 메모리를 할당할 수 있는 포크리스 저장 프로세스를 도입합니다. 자세한 내용은 동기화 및 백업 구현 방법 단원을 참조하십시오.

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

ElastiCache (Redis OSS)로 작업할 때 Redis는 다음과 같은 여러 경우에 백그라운드 쓰기 명령을 OSS 호출합니다.

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

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

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

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

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

Valkey 및 Redis를 사용한 백그라운드 쓰기 프로세스 및 메모리 사용 OSS

백그라운드 쓰기 프로세스가 호출될 때마다 Valkey와 Redis는 프로세스를 OSS 포크합니다(단일 스레드 엔진임). 하나의 포크는 Redis OSS .rdb 스냅샷 파일의 디스크에 데이터를 유지합니다. 나머지 포크가 모든 읽기 및 쓰기 작업을 처리합니다. 스냅샷이 point-in-time 스냅샷인지 확인하기 위해 모든 데이터 업데이트 및 추가는 데이터 영역과 별도로 사용 가능한 메모리 영역에 기록됩니다.

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

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

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

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

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

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

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

Valkey 및 Redis가 스냅샷을 OSS 수행하는 방법에 대한 자세한 내용은 http://valkey.io 참조하세요.

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

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

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

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

reserved-memory 파라미터를 사용하여 상자에 사용되는 메모리 양을 줄일 수도 있습니다.

의 Valkey 및 Redis별 파라미터에 대한 자세한 내용은 섹션을 ElastiCache참조하세요Valkey 및 Redis OSS 파라미터.

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