Redisson DNS Resolution 문제 분석 및 해결
1. 문제상황
1.1 발생 증상
간헐적으로 에러 발생
에러 해석
redis-host에 대해 DNS로 찾지 못함.
Timeout 발생 DNS서버가 5초 내로 응답하지 못함
1.2 환경 정보
java 17
org.redisson:redisson-spring-boot-starter:3.18.0
io.netty:4.1.79 (Final)
org.springframework.boot:2.7.3
1.3 에러 로그
2. DNS 관련 주요 개념
2.1 DNS 응답 유형
Authoritative: 해당 도메인의 공식 DNS 정보를 보유. 응답이 최종적이고 신뢰할 수 있음
Non-Authoritative: 캐시된 정보만 보유. 다른 서버에 추가 확인이 필요할 수 있음
NXDOMAIN (Non-Existent Domain): 도메인이 존재하지 않음을 나타내는 DNS 응답
3. 원인 분석
3.1 DnsAddressResolverGroup 조회 방식 이슈
redisson(netty) -> DNS
기존 DnsAddressResolverGroupFactory 을 통해 생성된 DnsAddressResolverGroup는 여러 DNS에 동시에 쿼리
쿼리 중 하나만 실패해도 조회실패
반면 SequentialDnsAddressResolverFactory 을 통해 생성된 DnsAddressResolver의 경우
DNS 요청에 대한 부하를 줄여서 문제가 없는걸까? (좀 더 확인해봐야할 부분)
4. 해결방안
4.1 Redisson 버전 업그레이드
DnsAddressResolverGroupFactory 대신 SequentialDnsAddressResolverFactory 사용하도록 변경
즉 DNS 조회에 대한 동시성을 제어함.
3.38.1 버전으로 redisson version upgrade함.
4.2 의존성 설정
SpringBoot 2.7 대는 위와와 같이 변경을 권장함.
버전을 올리고,
spring-data-33
제외spring-data-27
추가https://redisson.org/docs/integration-with-spring/#spring-boot-starter
참고
https://github.com/redisson/redisson/issues/1625
https://github.com/redisson/redisson/issues/1944
https://github.com/netty/netty/issues/8261#issuecomment-427350547
https://github.com/redisson/redisson/commit/2d83ebdf64bde8793b8c3b24be81ad23e72119d5
https://zorba91.tistory.com/353
https://blog.naver.com/dong6245/140050637164
Last updated
Was this helpful?