다음을 통해 공유


메모리 관리

이 문서에서는 Azure Cache for Redis의 메모리 관리에 대한 모범 사례를 설명합니다.

올바른 제거 정책 선택

애플리케이션에 대해 작동하는 제거 정책을 선택합니다. Azure Cache for Redis volatile-lru에 대한 기본 정책은 EXPIRE 와 같은 명령으로 설정된 TTL(Time to Live) 값이 있는 키만 제거될 수 있음을 의미합니다. TTL 값이 있는 키가 없으면 시스템에서 키를 제거하지 않습니다. 메모리가 부족할 경우 시스템이 어떤 키라도 제거할 수 있도록 하려면 allkeys-lru 정책을 고려하십시오.

키 만료 날짜 설정

메모리 압력으로 인해 제거하면 서버에 더 많은 부하가 발생할 수 있습니다. 메모리 부족이 있을 때까지 기다리지 않고 키를 사전에 제거하도록 키에 만료 값을 설정합니다. 자세한 내용은 Redis EXPIREEXPIREAT 명령에 대한 설명서를 참조하세요.

메모리 조각화 최소화

키 값이 크면 메모리가 제거될 때 조각화된 상태로 남을 수 있으며 메모리 사용량과 서버 부하가 높아질 수 있습니다.

메모리 사용량 모니터링

메모리 사용량을 모니터링하여 메모리 가 부족하지 않도록 합니다. 문제가 발생하기 전에 캐시 크기를 조정할 수 있는 기회를 제공하는 경고를 만듭니다.

maxmemory-reserved 설정 구성

maxmemory 예약 설정을 구성하여 시스템 응답성을 최대화합니다. 쓰기가 많은 워크로드 또는 캐시에 100KB 이상의 값을 저장하는 경우 충분한 예약 설정이 특히 중요합니다.

  • 이 설정은 maxmemory-reserved 장애 조치(failover) 중 복제와 같은 비캐시 작업을 위해 예약된 클러스터의 인스턴스당 MB 단위의 메모리 양을 구성합니다. 이 값을 설정하면 부하가 달라져도 Redis 서버 환경이 더 일관되도록 할 수 있습니다.

  • 이 설정은 maxfragmentationmemory-reserved 메모리 조각화를 수용하도록 예약된 클러스터의 인스턴스당 MB 단위로 메모리 양을 구성합니다. 이 값을 설정하면 캐시가 가득 차거나 거의 가득 차고 조각화 비율이 높을 때 Redis 서버 환경이 더 일관됩니다.

메모리가 이러한 작업에 예약된 경우 캐시된 데이터를 저장할 수 없습니다. 기본적으로 캐시를 만들 때 사용 가능한 메모리의 약 10%가 maxmemory-reserved에 예약되고, 나머지 10%가 maxfragmentationmemory-reserved에 예약됩니다. 쓰기가 많은 로드가 있는 경우 예약된 금액을 늘릴 수 있습니다.

maxmemory-reservedmaxfragmentationmemory-reserved에 허용되는 범위는 maxmemory의 10%~60%입니다. 이 값을 10%보다 작거나 60%보다 높게 설정하려고 하면 다시 평가되어 최소 10% 및 최대 60%로 설정됩니다.

캐시를 확장 또는 축소할 때 maxmemory-reservedmaxfragmentationmemory-reserved 설정은 모두 캐시 크기에 비례하여 자동으로 확장됩니다. 예를 들어 6GB 캐시에서 3GB로 설정되고 12GB 캐시로 확장하면 maxmemory-reserved 크기 조정 중에 설정이 자동으로 6GB로 업데이트됩니다. 규모를 축소하면 그 반대가 발생합니다.

메모리 예약 값을 변경 maxmemory-reserved 하면 maxfragmentationmemory-reserved 이미 실행 중인 많은 양의 데이터가 있는 캐시에 어떤 영향을 줄 수 있는지 생각해 보세요. 예를 들어 예약된 값이 10개% 최소값으로 설정된 53GB 캐시가 있는 경우 시스템에 사용 가능한 최대 메모리는 약 42GB입니다. 현재 used_memory 또는 used_memory_rss 값이 42GB보다 높은 경우 시스템은 둘 다 used_memoryused_memory_rss 42GB 미만이 될 때까지 데이터를 제거해야 합니다.

제거는 서버 부하 및 메모리 조각화를 증가시킬 수 있습니다. used_memoryused_memory_rss와 같은 캐시 메트릭에 대한 자세한 내용은 고유한 메트릭 만들기를 참조하세요.

참고

Azure PowerShell, Azure CLI 또는 REST API를 사용하여 프로그래밍 방식으로 캐시 용량을 확대하거나 축소할 때, 업데이트 요청에 포함된 maxmemory-reserved 또는 maxfragmentationmemory-reserved 설정은 무시됩니다. 크기 조정 변경만 적용됩니다. 크기 조정 작업이 완료된 후 메모리 설정을 업데이트할 수 있습니다.