간단하게 자주 발생하는 Redis 장애를 정리해봅니다. 뭐, 크게 아래의 분류를 넘어가는 일이 거의 없던걸로 기억합니다.
장애 분류 | 소분류 | 내용 |
메모리 | 메모리 RSS 관리 | Redis는 In-Memory 솔루션이기 때문에 실제 물리 메모리보다 많은 메모리를 사용하게 되면, Swap으로 인해서 성능이 극심하게 떨어지게 된다. 즉 RSS 메모리 관리를 잘해야만 한다 |
설정 | 기본 설정 사용 | * Redis는 기본적으로 기본 설정을 사용할 경우 실 서비스에서 RDB사용으로 과도한 메모리 디스크 저장으로 인해서 많은 부하를 가지게 된다. 필수로 SAVE 옵션을 끄고, 필요하다면 수동 백업이 필요하다 |
싱글스레드 | 과도한 Value 크기 | * Redis는 싱글 스레드이기 때문에 하나의 명령이 긴 시간을 차지하면 결국 Redis 성능 저하로 이어진다. * Hgetall, hvals 등의 collection의 데이터를 과도하게 많이 가져온다거나. * 몇 MB 이상의 Key나 Value를 사용할 경우 문제가 발생한다. |
O(N) 명령의 사용 | Keys나 flushdb/flushall, 큰 크기의 collection을 지우는 등의 문제 역시, Redis의 성능을 떨어트린다. |