[Spring Boot] connection timeout 시간 늘리기
■ 목표
- apache + 스프링부트(tomcat) + jsp/jquery 기반으로 개발 도중 대용량 데이터를 처리하는 과정에서 커넥션 타임아웃 발생.
- 커넥션 타임아웃을 늘리기 위해 여러가지 테스트를 진행하였다.
- 실제로 이 방법이 쓰이는 일은 없었다... 타임아웃이 발생한다는 것은 로직이 너무 오래 걸리기 때문으로.. 설계 및 로직을 수정하는 것으로 결론이 났다.
무작정 타임아웃을 늘리는 것이 능사는 아니다.
타임아웃을 늘리게 되면 서버에서 수행중인지, 오류로 커넥션이 묶인 것인지 판단이 힘들어진다.
되도록 타임아웃을 늘리지 않고 오래 걸리는 로직을 수정하는 것이 좋을 듯 하다.
1. ajax 요청 시 타임아웃을 늘려보기
js단에서 서버로 ajax 요청을 보낼 시, 타임아웃 시간을 늘려서 테스트하였다.
$.ajax({
url: '/api/',
type: 'post',
dataType: 'json',
timeout: 1800000
});
서버 단의 타임아웃 시간은 길지만, 화면에서의 타임아웃이 짧았다면 이 방법으로 해결이 된다.
2. spring boot의 connection-timeout 시간 설정
위의 방법으로 해결되지 않았다면, 서버 쪽 timeout을 확인한다.
How to Configure Spring Boot Tomcat | Baeldung
위 글을 참고하여 스프링부트 기본 설정파일에(application.yml, application.properties) 아래의 설정을 추가하였다.
1) application.properties
server.connection-timeout=1800000
2) application.yml
server:
connection-timeout: 1800000
3. apache httpd 타임아웃 설정
위 방법으로도 해결되지 않았다면 apache httpd에서 타임아웃이 설정되어 httpd단에서 커넥션을 끊는 것이다.
apache 설정(httpd.conf)으로 이동해 타임아웃을 추가한다.
아래 설정을 httpd.conf파일에 추가한다.
Timeout 1800000
지금까지 springboot-apache환경에서 커넥션 타임아웃을 설정하는 방법에 대해 알아보았다.