Azure Managed Redis에 대한 메모리 관리

이 문서에서는 Azure Managed Redis 캐시의 효과적인 메모리 관리에 대해 설명합니다.

메모리 사용량을 보고하는 방법 이해

사용된 메모리 메트릭은 모든 분할된 데이터베이스를 포함하여 데이터베이스에서 사용하는 총 메모리를 보고합니다. 고가용성을 활성화하면, 이 메트릭에는 주 샤드 및 복제본 샤드에서 사용하는 메모리가 포함됩니다. 즉, 보고된 값은 실제 데이터 세트의 약 두 배 크기일 수 있습니다.

예를 들어 고가용성을 사용하는 캐시에 10GB의 데이터를 저장하는 경우 사용된 메모리 메트릭은 약 20GB를 보고합니다.

사용된 메모리 메트릭에는 메모리 조각화가 포함되지 않습니다. 할당자 오버헤드로 인해 서버의 실제 실제 메모리 사용량이 더 높을 수 있습니다. 각 메트릭에 포함된 항목에 대한 자세한 내용은 모니터링 데이터 참조를 참조하세요.

용량 계획에 대한 메모리 예측

필요한 메모리를 계획할 때 값의 원시 크기 이상으로 이러한 요소를 고려합니다.

  • 키별 오버헤드: Redis에 저장된 각 키에는 내부 메타데이터(포인터, 형식 정보, 만료 추적)가 포함됩니다. 이 오버헤드는 일반적으로 키 이름 길이 및 값 형식에 따라 키당 50~100바이트입니다. 많은 수의 작은 키의 경우 이 오버헤드가 클 수 있습니다.
  • 키 이름: 키 이름을 저장하는 데 사용되는 메모리가 대규모로 추가됩니다. 키 이름이 짧을 경우 메모리 사용량을 줄일 수 있습니다.
  • 만료 추적: TTL 집합이 있는 키는 만료 부기 작업에 추가 메모리를 사용합니다.
  • 고가용성 복제: 고가용성을 사용하도록 설정하면 데이터 세트가 복제됩니다. 사용된 메모리 메트릭은 주 메모리와 복제본 메모리를 모두 반영하지만 SKU 메모리 제한은 이미 이를 고려합니다. 복제를 수용하기 위해 더 큰 SKU를 선택할 필요가 없습니다. 실제 데이터 세트 크기에 따라 SKU를 선택합니다.

특정 키의 정확한 메모리 비용을 확인하려면 Redis MEMORY USAGE 명령을 사용합니다.

MEMORY USAGE <your_key_name>

이 명령은 모든 내부 오버헤드를 포함하여 키에서 사용하는 총 바이트를 반환합니다. 이를 사용하여 실제 사용량에 대한 키당 메모리 예측의 유효성을 검사합니다.

제거 정책

애플리케이션에 적합한 제거 정책을선택합니다. Azure Managed Redis에 대한 기본 정책은 volatile-lru입니다. 즉, EXPIRE 같은 명령으로 TTL 값이 설정된 키만 제거될 수 있습니다. TTL 값이 있는 키가 없으면 시스템에서 키를 제거하지 않습니다. 메모리 압박이 있을 경우, 시스템에서 어떤 키라도 제거할 수 있도록 하려면 allkeys-lru 정책을 고려하십시오.

키 만료

키에 만료 값을 설정합니다. 만료는 메모리에 압박이 오기 전에 키를 미리 제거합니다. 메모리 압박으로 인해 데이터가 제거되면 서버에 더 많은 부하가 발생할 수 있습니다. 자세한 내용은 EXPIREEXPIREAT 명령에 대한 설명서를 참조하세요.

메모리 사용량 모니터링

사용된 메모리 비율 메트릭을 원시 사용 메모리 대신 모니터링하는 것이 좋습니다. 백분율 메트릭은 이미 고가용성 복제를 포함하여 SKU의 총 메모리 제한을 고려하므로 복제본 메모리에 대해 정신적으로 조정할 필요 없이 용량에 얼마나 근접한지를 간단하게 볼 수 있습니다.

사용된 메모리 비율에 대한 경고를 추가하여 메모리가 부족하지 않고 문제가 표시되기 전에 캐시 크기를 조정할 수 있도록 합니다. 사용된 메모리 비율이 지속적으로 75%을 초과하면 더 높은 계층으로 확장하여 메모리를 늘리는 것이 좋습니다. 계층에 대한 자세한 내용은 아키텍처를 참조 하세요.