Redis Slow Log로 지연된 명령어 디버깅 방법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
Redis를 프로덕션 환경에서 운영하는 소프트웨어 개발자 및 DevOps 엔지니어
핵심 요약
- Redis Slow Log는 명령어 실행 시간이 설정된 임계값을 초과할 때 자동으로 기록하여 성능 병목 현상을 파악하는 도구
- slowlog-log-slower-than(마이크로초 단위)과 slowlog-max-len(기록 보관 수) 두 가지 설정으로 Slow Log의 동작을 제어 가능
- SLOWLOG GET 명령어로 로그 조회, SLOWLOG RESET으로 로그 초기화 가능
섹션별 세부 요약
1. Redis Slow Log 개요
- Redis는 실행 시간을 기준으로 지연된 명령어를 기록하는 내장 기능 제공
- 네트워크 I/O 시간은 제외하고 Redis 내부 처리 시간만 측정
- 고 트래픽 시스템에서 성능 문제를 빠르게 파악 가능
2. Slow Log 설정 방법
- slowlog-log-slower-than:
- 0: 모든 명령어 기록
- -1: 기능 비활성화
- 예: CONFIG SET slowlog-log-slower-than 10000
(10ms 이상 지연 시 기록)
- slowlog-max-len:
- 메모리에 보관할 로그 수 설정
- 예: CONFIG SET slowlog-max-len 128
3. 로그 조회 및 관리
- SLOWLOG GET [수]:
- 예: SLOWLOG GET 5
→ 최근 5개의 지연 로그 출력
- 각 항목: ID, 타임스탬프, 실행 시간(마이크로초), 명령어 및 인자 포함
- SLOWLOG RESET:
- 모든 로그 즉시 삭제 (복구 불가)
4. 지연 원인 분석 사례
- KEYS/SMEMBERS 대규모 데이터셋 사용
- 트래픽 증가 시 CPU 과부하
- Lua 스크립트 성능 저하
결론
- slowlog-log-slower-than과 slowlog-max-len을 적절히 설정해 지연 명령어를 모니터링하고, SLOWLOG GET으로 실시간 분석
- SLOWLOG RESET은 로그 관리 시 주의 깊게 사용해야 하며, 성능 최적화를 위해 주기적으로 확인 권장