tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Eric Durand <eric_p_dur...@yahoo.com>
Subject Tomcat Threads hanging in read()
Date Tue, 04 Oct 2005 23:58:33 GMT
Hello,

I am using Tomcat 4.1.29, with Coyote HTTP Connector.
After a few hours of uptime, I get an error on the log
telling that all threads are busy. The workload is not
high on the server.
Getting a dump of Tomcat Threads I see that most of
them are stuck in a read() method on the socket:

"TP-Processor104" daemon prio=5 tid=0x005730b0
nid=0x1d38c00 runnable [f42f3000..f42f5b20]
        at
java.net.SocketInputStream.socketRead0(Native Method)
        at
java.net.SocketInputStream.read(SocketInputStream.java:129)
        at
org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:777)
        at
org.apache.coyote.http11.InternalInputBuffer$InputStreamInputBuffer.doRead(InternalInputBuffer.java:807)
        at
org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:158)
        at
org.apache.coyote.http11.InternalInputBuffer.doRead(InternalInputBuffer.java:742)
        at
org.apache.coyote.Request.doRead(Request.java:457)
        at
org.apache.coyote.tomcat4.CoyoteInputStream.readBytes(CoyoteInputStream.java:197)
        at
org.apache.coyote.tomcat4.CoyoteInputStream.read(CoyoteInputStream.java:154)
        at
java.io.DataInputStream.readFully(DataInputStream.java:266)
        at
java.io.DataInputStream.readFully(DataInputStream.java:242)
        at
ServletHandler$ServletForwardCommand.execute(ServletHandler.java:376)
        at
ServletHandler.doPost(ServletHandler.java:191)
        at
javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
        at
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

Doing a netstat -a on the server shows me a growing
number of sockets in ESTABLISHED state sitting there.
 
I see no way I can in the servlet setup a timeout on
the read() on the InputStream I get from the
HttpServletRequest, and cleanly stop the execution of
the doPost() method.
It seems that the connectionTimeout attribute for the
Connector is not meant for this.
I did not find any way to set the SO_TIMEOUT on the
socket since I don't have any access to it.
I did not find any Java property either to set this.

So I'm kind of stuck here. If any of you has any idea,
thanks for your help.

Eric.



		
__________________________________ 
Yahoo! Mail - PC Magazine Editors' Choice 2005 
http://mail.yahoo.com

---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org


Mime
View raw message