본문 바로가기
Server/Spring

Webclient io.netty.resolver.dns.DnsNameResolverTimeoutException

by min_gui 2025. 6. 24.

 

 

원인

Webclient를 사용 하면서 DnsNameResolverTimeoutException이 발생했다. 

내부망에서 내부 서버 통신 시 외부 도메인 사용으로 인해서 시간이 오래 걸려 발생한 문제이다. 

 

해결방법

1. 직접 내부 IP 를 통해 직접 접속

2. 내부 DNS 통해서 접속방법

 

 

에러 Timeout 5,000ms가 발생했다. 설정한게 없는데 왜 5초나 걸렸지 보니 기본 Timeout 설정이 5초 였다.

 

  • UnixResolverOptions class
package io.netty.resolver.dns;

final class UnixResolverOptions {
    ...

    static final class Builder {
        private int ndots;
        private int timeout;
        private int attempts;

        private Builder() {
            this.ndots = 1;
            this.timeout = 5;
            this.attempts = 16;
        }
    ...
    }
}

 

따로 webclient HttpClient 생성할때 Timeout 시간을 설정 할 수 있다.

  • HttpClient.create
HttpClient.create(provider)
                .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 10000)
                .responseTimeout(Duration.ofMillis(10000))
                .doOnConnected(conn ->
                        conn.addHandlerLast(new ReadTimeoutHandler(10000, TimeUnit.MILLISECONDS))
                                .addHandlerLast(new WriteTimeoutHandler(10000, TimeUnit.MILLISECONDS))
                ).resolver(spec ->{
                	// 10초 설정
                    spec.queryTimeout(Duration.ofSeconds(10));
                });

 

'Server > Spring' 카테고리의 다른 글

Spring WebFlux 와 Netty  (0) 2025.05.12
Spring AOP 내부 호출 작동 문제  (0) 2024.12.11
Spring Boot Servlet Requset euc-kr 인코딩 문제  (0) 2024.01.10