ElastiCache for Redis 클러스터 노드에 대한 오류 메시지 "OOM command not allowed"를 해결하려면 어떻게 해야 합니까?

2분 분량
0

Amazon ElastiCache for Redis 클러스터 노드를 쿼리하면 "OOM command not allowed when used memory than 'maxmemory'" 오류가 표시됩니다. 이 문제를 해결하려면 어떻게 해야 합니까?

간략한 설명

ElastiCache for Redis 클러스터에서 추가 메모리를 해제할 수 없는 경우 OOM 오류가 발생합니다.

ElastiCache for Redis는 메모리가 부족할 때 캐시 노드의 파라미터 그룹에 대해 설정되는 maxmemory-policy를 구현합니다. 기본값(volatile-lru)은 만료 시간(TTL 값)이 설정된 키를 제거하여 메모리를 확보합니다. 캐시 노드에 TTL 값이 있는 키가 없으면 대신, 오류를 반환합니다.

이 오류를 해결하고 클라이언트가 OOM command not allowed 오류 메시지를 받지 않도록 하려면 다음을 몇 가지 조합해서 실행합니다.

  • 노드에서 키의 TTL 값을 설정합니다.
  • 다른 maxmemory-policy 파라미터를 사용하도록 파라미터 그룹을 업데이트합니다.
  • 수동으로 기존의 몇 개 키를 삭제하여 메모리를 확보합니다.
  • 더 큰 노드 유형을 선택합니다.

참고: 해결 방법을 정확히 어떻게 조합할지는 각 사용 사례에 따라 달라집니다.

해결 방법

노드에서 키의 TTL 값 설정

노드에서 키의 TTL 값을 설정할 수 있습니다. 그러면 기본 volatile-lru 메모리 관리 정책은 만료된 키를 제거하여 메모리를 확보합니다.

TTL 값을 설정하는 경우 volatile-ttl 설정도 사용할 수 있습니다. 이 설정에서는 최저 TTL의 키부터 시작하여 만료 시간이 설정된 키만 제거하여 공간을 확보합니다.

다른 maxmemory-policy 설정 선택

캐시 노드 파라미터 그룹의 maxmemory-policy를 다음 값 중 하나로 설정합니다.

  • allkeys-lru: 최근 사용한 키를 먼저 제거하여 공간을 확보합니다.
  • allkeys-random: 임의의 키를 제거하여 공간을 확보합니다.
  • volatile-random: 만료가 설정된 임의의 키를 제거하여 공간을 확보합니다.

또한 Redis 4.0에서는 LFU(Least Frequently Used) 제거 모드를 제공합니다.

  • allkeys-lfu: 가장 적게 액세스한 키를 제거하여 공간을 확보합니다.
  • volatile-lfu: 가장 적게 액세스한 키부터 시작해 만료가 설정된 키를 제거하여 공간을 확보합니다.

기존 키를 삭제하여 메모리 확보

DEL 명령을 사용해 기존 키를 삭제하여 메모리를 확보할 수 있습니다. 자세한 내용은 redis.io 웹 사이트의 Del 키[key...]를 참조하세요.

중요: 기존 키를 삭제하면 일시적으로 OOM 오류가 해결됩니다. 또한 메모리 관리 전략도 다시 고려해야 합니다.

더 큰 노드 유형 선택

각 노드 유형은 사용 가능한 메모리 용량이 다릅니다. 노드에서 사용 가능한 메모리 용량은 수정할 수 없습니다. 그러나 더 많은 스토리지의 더 큰 노드 유형을 사용할 수 있습니다.

중요: 더 큰 노드 유형을 사용하면 일시적으로 OOM 오류가 해결됩니다. 또한 메모리 관리 전략도 다시 고려해야 합니다.


관련 정보

Redis 4.0.10 파라미터 변경 사항

Redis 노드 유형별 파라미터

키 제거 - Redis 키 제거 정책(LRU, LFU 등) 개요

AWS 공식
AWS 공식업데이트됨 2년 전