생계유지형 개발자/Stack Over Flow 한국판
[Spring Boot] Exceeded limit on max bytes to buffer : 262144
이 가을
2021. 10. 22. 19:08
# 오류
Spring Boot에서 WebClient 사용하여 API 호출하는 로직에서 다음 에러가 발생했다.
org.springframework.web.reactive.function.client.WebClientResponseException: 200 OK from GET http://API_URL;
nested exception is org.springframework.core.io.buffer.DataBufferLimitException:
Exceeded limit on max bytes to buffer : 262144
응답이 200 OK 인걸 보면 요청까지는 성공했는데 아무래도 응답사이즈가 커서 오류가 발생한 것 같다.
# 원인
2.x 스프링 버전 올라오면서 버퍼 사이즈가 262114 Bytes로 고정되었다고 한다.
소스코드에서 이 사이즈를 변경하거나 제한을 없애주어야 한다.
# 해결
ExchangeStrategies 객체 생성하는 로직에서 maxInMemorySize 함수를 호출한다.
함수의 인자로 메모리 사이즈를 bytes 단위로 기입하거나, 무제한일 경우 -1을 입력한다.
예를 들어, 버퍼사이즈를 최대 50MB 사용하겠다면 .maxInMemorySize(50 * 1024 * 1024)을 입력한다.
사이즈를 제한하지 않겠다면 .maxInMemorySize(-1)을 입력한다.
ExchangeStrategies strategies = ExchangeStrategies
.builder()
.codecs(configurer -> {
configurer
.defaultCodecs()
.maxInMemorySize(-1); // unlimited buffer size (default: 256k)
});
WebClient webClient = WebClient.builder()
.exchangeStrategies(strategies)
.build();
※ 참고
[Spring] DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144 에러에 대한 해결 책
최근 Spring의 버전 업데이트를 했는데 갑자기 WebClient에서 아래와 같은 에러가 발생한다. org.springframework.core.io.buffer.DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144 at..
garyj.tistory.com