핵심 요약
우아한형제들이 Redis 파이프라인 처리에서 신규 커넥션 증가 이슈를 분석하고, 전용 커넥션 할당과 Idle 커넥션 관리 개선으로 문제를 해결했습니다.
구현 방법
- 기술 스택과 환경: Redis, Lettuce, Elasticache, Spring Boot 3.x, RedisTemplate, LettuceConnectionFactory, executePipelined, openPipeline
- 파이프라인 구성: 파이프라인 사용 시 전용 커넥션을 확보하도록 구현
- 커넥션 풀 전략 변경: GenericObjectPoolConfig.lifo를 false로 설정하여 FIFO 재사용 방식으로 변경
- Idle 커넥션 관리 도입: minEvictableIdleDuration, timeBetweenEvictionRuns 설정으로 Idle 커넥션 제거
- 제약 조건 참고: 최대 활성 커넥션 20, 100초 타임아웃 등 운영 환경 조건 고려
주요 결과
- FIFO 풀 적용으로 커넥션 재사용 효율 증가
- Idle 커넥션 정리로 불필요한 재연결 감소
- 피크 이후 신규 연결 증가 현상 억제 확인
