- [트러블 슈팅] 갑자기 사라진 Redis2025년 02월 03일 12시 06분 04초에 업로드 된 글입니다.작성자: do_hyuk
기존에 잘 동작하던 개발 서버에서 Redis와 관련된 API 들이 동작하지 않는 것을 확인하게 되었다.
오류를 확인해보니 Redis 오류인 것을 확인하였다.
2025-02-03T01:31:34.427Z ERROR 1 --- [Eighteen_BE] [http-nio-8080-exec-22] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis] with root cause
일단 docker에 올려둔 redis를 확인해보려 하니 docker에 올려둔 redis가 보이지 않았다.
혹시 문제가 생겨 내려갔나 확인하기 위해 `docker ps -al` 명령어로 내려간 이미지가 있나 확인해보려 했지만 redis는 존재하지 않았다..
`docker images`를 확인해보고 레디스를 다시 올려보았다.
docker images docker에 redis를 올리고 확인해보니 바로 종료된 것을 확인할 수 있다.
레디스 자체의 문제라고 판단되어 `docker logs redis`를 확인해본 결과 Redis 컨테이너가 REDIS_PASSWORD 환경 변수가 설정되지 않아서 실행되지 않은 것을 확인할 수 있다. Bitnami Redis 이미지는 기본적으로 비밀번호를 요구하며, 비밀번호 없이 실행하고 싶다면 ALLOW_EMPTY_PASSWORD 환경 변수를 설정해야 하는데 설정을 안해줘서 문제가 발생한 것이다.
ALLOW_EMPTY_PASSWORD 설정을 활성화하면서 실행해 보겠다.
docker run --name redis -p 6379:6379 -e ALLOW_EMPTY_PASSWORD=yes -d bitnami/redis:7.2.4
`docker ps`로 확인해보니 다음과 같이 잘 올라간 것을 확인할 수 있다.
근본적인 문제 해결
같은 팀원에게 물어보니 이전에도 같은 경험이 있다고 해서 레디스가 왜 혼자 내려가는지 알아봐야 할 것 같다.
가능성이 제일 높은 원인으로 메모리가 부족한 경우에 비정상적으로 종료될 수 있기 때문에 메모리를 확인해보았다.
`docker stats` 명령어 메모리는 현재 0.05%만 사용되고 있기 때문에 문제는 없어 보인다.
생각해보니 redis를 방금 막 새로 올렸기 때문에 데이터가 굉장히 적을텐데 0.05%나 차지하고 있다고 생각해볼 수 있을거 같다.
`docker exec -it redis redis-cli`로 redis에 CLI에 접근하여 데이터를 확인해보니 데이터가 1개만 저장되어 있는걸 확인했다.
단순 계산으로 데이터 하나에 3.816MiB를 차지한다면 LIMIT 까지 대략 1,979개의 데이터가 저장되면 비정상적인 종료가 될 수 있다고 판단하였고, 겨우 2000개 정도의 데이터만을 저장하기에는 레디스가 저장할 데이터가 많기 때문에 이 부분을 해결해야 할 것 같다.
'포트폴리오 > Eighteen' 카테고리의 다른 글
뱃지 시스템 적용 (0) 2025.01.15 [트러블슈팅] 랜덤 Pagination 너무 쉽게 봤다. (0) 2025.01.09 [트러블 슈팅] 회원 상세 조회 문제 발생(2025.01.06) (0) 2025.01.07 [트러블 슈팅] redis 관련 문제 발생(2025.01.03) (0) 2025.01.03 [트러블 슈팅] 요청 값 Dto에 어떻게 매핑되는가 (0) 2024.11.15 댓글