본문 바로가기
Server

Tomcat Configuration (connectionTimeout 속성)

by vamalboro 2010. 3. 3.
웹개발시 Tomcat WAS를 사용하다 보면 아래와 같은 예외가 발생할 때가 있다.

java.net.SocketTimeoutException: Read timed out

이 예외의 스택을 추적했을때 나의 경우 아래와 같은 예외스택을 뿌려주고 있었다.

    at java.net.SocketInputStream.socketRead0(Native Method)
   at java.net.SocketInputStream.read(SocketInputStream.java:129)
   at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:751)
   at org.apache.coyote.http11.InternalInputBuffer$InputStreamInputBuffer.doRead(InternalInputBuffer.java:781)
   at org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:116)
   at org.apache.coyote.http11.InternalInputBuffer.doRead(InternalInputBuffer.java:710)
   at org.apache.coyote.Request.doRead(Request.java:428)
   at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:304)
   at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:405)
   at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:327)
   at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:162)
   at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1025)
   at org.apache.commons.io.IOUtils.copy(IOUtils.java:999)
   at org.apache.commons.io.IOUtils.toByteArray(IOUtils.java:218)

결국 예외 스택의 가장 위의 java.net.SocketInputStream.socketRead0  이 메서드가 실행이 될때 예외가 발생한 것인데

이는 소켓에서 Stream을 읽을때 Stream의 전송이 끊겨 발생한 예외이다.

여기 저기 찾아보았을때의 해결방법은 server.xml파일의 Connector의 connectionTimeout속성 값을 늘려주면 된다.

기본으로 20000(ms단위)로 되어있어서 보통은 바꿔주지 않아도 되지만 가끔 자신의 개발컴퓨터에서 서버를 돌리면서 개발을 할때 이 예외가 발생하기도 한다.(그때는 망설임없이 바꿔주자!)

나중에 apache와 연동할때에 이
connectionTimeout 속성 값을 서로 맞춰주어야 한다고 나와있기는 한데
그건 그때가서 신경쓸 문제고.-_-;;

'Server' 카테고리의 다른 글

Tomcat startup  (0) 2009.06.20