이 문서에서는 Azure Cache for Redis의 메모리 관리에 대한 모범 사례를 설명합니다.
올바른 제거 정책 선택
애플리케이션에 대해 작동하는 제거 정책을 선택합니다. Azure Cache for Redis volatile-lru
에 대한 기본 정책은 EXPIRE 와 같은 명령으로 설정된 TTL(Time to Live) 값이 있는 키만 제거될 수 있음을 의미합니다. TTL 값이 있는 키가 없으면 시스템에서 키를 제거하지 않습니다. 메모리가 부족할 경우 시스템이 어떤 키라도 제거할 수 있도록 하려면 allkeys-lru
정책을 고려하십시오.
키 만료 날짜 설정
메모리 압력으로 인해 제거하면 서버에 더 많은 부하가 발생할 수 있습니다. 메모리 부족이 있을 때까지 기다리지 않고 키를 사전에 제거하도록 키에 만료 값을 설정합니다. 자세한 내용은 Redis EXPIRE 및 EXPIREAT 명령에 대한 설명서를 참조하세요.
메모리 조각화 최소화
키 값이 크면 메모리가 제거될 때 조각화된 상태로 남을 수 있으며 메모리 사용량과 서버 부하가 높아질 수 있습니다.
메모리 사용량 모니터링
메모리 사용량을 모니터링하여 메모리 가 부족하지 않도록 합니다. 문제가 발생하기 전에 캐시 크기를 조정할 수 있는 기회를 제공하는 경고를 만듭니다.
maxmemory-reserved 설정 구성
maxmemory 예약 설정을 구성하여 시스템 응답성을 최대화합니다. 쓰기가 많은 워크로드 또는 캐시에 100KB 이상의 값을 저장하는 경우 충분한 예약 설정이 특히 중요합니다.
이 설정은
maxmemory-reserved
장애 조치(failover) 중 복제와 같은 비캐시 작업을 위해 예약된 클러스터의 인스턴스당 MB 단위의 메모리 양을 구성합니다. 이 값을 설정하면 부하가 달라져도 Redis 서버 환경이 더 일관되도록 할 수 있습니다.이 설정은
maxfragmentationmemory-reserved
메모리 조각화를 수용하도록 예약된 클러스터의 인스턴스당 MB 단위로 메모리 양을 구성합니다. 이 값을 설정하면 캐시가 가득 차거나 거의 가득 차고 조각화 비율이 높을 때 Redis 서버 환경이 더 일관됩니다.
메모리가 이러한 작업에 예약된 경우 캐시된 데이터를 저장할 수 없습니다. 기본적으로 캐시를 만들 때 사용 가능한 메모리의 약 10%가 maxmemory-reserved
에 예약되고, 나머지 10%가 maxfragmentationmemory-reserved
에 예약됩니다. 쓰기가 많은 로드가 있는 경우 예약된 금액을 늘릴 수 있습니다.
maxmemory-reserved
및 maxfragmentationmemory-reserved
에 허용되는 범위는 maxmemory
의 10%~60%입니다. 이 값을 10%보다 작거나 60%보다 높게 설정하려고 하면 다시 평가되어 최소 10% 및 최대 60%로 설정됩니다.
캐시를 확장 또는 축소할 때 maxmemory-reserved
및 maxfragmentationmemory-reserved
설정은 모두 캐시 크기에 비례하여 자동으로 확장됩니다. 예를 들어 6GB 캐시에서 3GB로 설정되고 12GB 캐시로 확장하면 maxmemory-reserved
크기 조정 중에 설정이 자동으로 6GB로 업데이트됩니다. 규모를 축소하면 그 반대가 발생합니다.
메모리 예약 값을 변경 maxmemory-reserved
하면 maxfragmentationmemory-reserved
이미 실행 중인 많은 양의 데이터가 있는 캐시에 어떤 영향을 줄 수 있는지 생각해 보세요. 예를 들어 예약된 값이 10개% 최소값으로 설정된 53GB 캐시가 있는 경우 시스템에 사용 가능한 최대 메모리는 약 42GB입니다. 현재 used_memory
또는 used_memory_rss
값이 42GB보다 높은 경우 시스템은 둘 다 used_memory
used_memory_rss
42GB 미만이 될 때까지 데이터를 제거해야 합니다.
제거는 서버 부하 및 메모리 조각화를 증가시킬 수 있습니다.
used_memory
및 used_memory_rss
와 같은 캐시 메트릭에 대한 자세한 내용은 고유한 메트릭 만들기를 참조하세요.
참고
Azure PowerShell, Azure CLI 또는 REST API를 사용하여 프로그래밍 방식으로 캐시 용량을 확대하거나 축소할 때, 업데이트 요청에 포함된 maxmemory-reserved
또는 maxfragmentationmemory-reserved
설정은 무시됩니다. 크기 조정 변경만 적용됩니다. 크기 조정 작업이 완료된 후 메모리 설정을 업데이트할 수 있습니다.