Back-end/Server

(Redis) OOM (Out Of Memory) 문제 시 해결 방법

개발자 케빈 2022. 11. 14. 22:16

※ Redis 클러스터에서 추가 메모리를 해제할 수 없는 경우 OOM (Out Of Memory) 메세지가 발생된다.

: 지속적으로 해당 문제 발생 시, 텐센트 Redis 메모리를 비 정상적으로 많이 잡아 먹을 수 있음.

 

1. 해결 방법

 : Redis 설정에서, maxmemory-policy 설정 값을 변경해준다.

※ maxmemory-policy : Redis Memory가 가득 찼을 때, 기존 데이터를 어떻게 처리할 지에 대한 옵션

 

2. maxmemory-policy 옵션 정리

 

 옵션 값 설명
noeviction (기본 값) 기존를 삭제하지 않음. 메모리 한계에 도달 시 OOM 오류를 반환하며 새로운 데이터가 저장되지 않음.
allkeys-lru 모든 것 중에서 * LRU 기준으로 삭제하여 공간을 확보해준다.
volatile-lru expire set을 가진 것 중 LRU 기준으로 삭제하여 공간을 확보해준다.
volatile-ttl expire set을 가진 것 중 TTL이 짧은 것부터 삭제하여 공간을 확보해준다.
allkeys-random 모든 것 중에서 랜덤으로 삭제하여 공간을 확보해준다.
volatile-random expire set을 가진 것 중에서 랜덤으로 삭제하여 공간을 확보해준다.

 

3. Redis 설정값 확인 및 변경 방법 * 텐센트 Redis Server 사용 기준

 3-1. Redis 설정 옵션 확인 방법

 

  A.  Redis 콘솔 접속

 

 

  B. 커맨드 라인에서 info memory 명령어를 통해 설정 정보를 확인

 

 

 

 3-2. 설정값 변경 방법. 

  A. 해당 redis 인스턴스로 접근

 

 B. 매개변수 세팅하는 부분에서, 원하는 설정 값 변경.