개발공작소
article thumbnail
728x90
반응형

 

 

 

 

에러가 발생해서 로그를 확인해보니, 다음과 같은 에러가 발생했다.

 

 

java.net.sockettimeoutexception read timed out 에러 발생

 

 

에러 원인

 

데이터의양이 많다던지, 네트워크 속도 때문에 실제 요청이 수신될때까지의 시간이 지나도록

수신이 완료 되지 않을때 생기는 에러가 ReadTimeOut이다.

 

즉, 수신대기시간을 늘려주면 된다는 것이다..

 

 

해결 방법

 

1. server.xml의 connectionTimeOut 값 수정

 

톰캣의 server.xml의 <Connector>의 connectionTimeout의 값을 수정해준다.

기본값은 "20000"으로 잡혀 있다. 이걸 "99999"와 같이 늘려주도록 하자.

 

    <!-- 수정전 -->
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
               
    <!-- 수정후 -->
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="99999"
               redirectPort="8443" />

 

 

2. HTTP Connection이 수행되는 connectionTimeOut 및 ReadTimeOut 설정값 수정

 

.java에서 HttpURLConnection을 사용해 서버통신을 하는 경우에는 해당 객체에서 

connectionTimeOut 및 ReadTimeOut을 직접 설정해주어야 한다.

 

URL url = new URL('http://www.naver.com');

HtppURLConnection = con (HttpURLConnection)url.openConnection();

//con.setConnectionTimeout(1000);
con.setConnectionTimeout(10000);

//con.setReadTimeout(2000);
con.setReadTimeout(20000);

// ConnectionTimeout : 1000 => 10000로 설정
// ReadTimeout : 2000 => 20000로 설정

..........

 

 

이렇게 하면 Read timed out에러가 해결될 것이다. 

 

 

 

 

728x90
반응형
profile

개발공작소

@모찌바라기

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!