원인
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 |