On the same note. Is there a way to log in access log at what time the request was received and time response was sent? I am planning to add more debug to see how long it waits before timing out.
On Wed, Jan 20, 2010 at 12:08 PM, Mohit Anchlia <mohitanch...@gmail.com> wrote: > On Wed, Jan 20, 2010 at 11:41 AM, Christopher Schultz > <ch...@christopherschultz.net> wrote: >> -----BEGIN PGP SIGNED MESSAGE----- >> Hash: SHA1 >> >> Mohit, >> >> On 1/20/2010 2:11 PM, Mohit Anchlia wrote: >>>> Server version: Apache Tomcat/6.0.18 >>>> >>>> We don't any other web server in front >> >> Okay. What connector(s) are you using? I'm not sure it matters, given >> the other information you've provided. > > <Connector port="8080" protocol="HTTP/1.1" > connectionTimeout="120000" > maxThreads="300" > redirectPort="8443" /> > > >>>> Interesting. Do all responses with fewer than 2657 bytes succeed? Do all >>>> responses with more than 2656 bytes fail? >>> >>> YES >> >> Hmm. >> >>> Please post the entire stack trace of the exception. >>> >>>> SEVERE: Servlet.service() for servlet SwitchServlet threw exception >>>> java.net.SocketTimeoutException: Read timed out >>>> at java.net.SocketInputStream.socketRead0(Native Method) >>>> at java.net.SocketInputStream.read(SocketInputStream.java:129) >>>> at java.io.FilterInputStream.read(FilterInputStream.java:111) >>>> at >>>> com.wily.introscope.agent.probe.net.ManagedSocketInputStream.read(ManagedSocketInputStream.java:214) >> >> I've never see this class before. What is it? In this some kind of >> instrumentation? If so, what happens if you turn it off? > > Yes it's Wily that we use to instrument to get the throughput, > response time etc. > >> Another interesting thing is that this fails during a read() operation. >> So, your servlet isn't failing to send data to the client, it's failing >> to read the data in the first place. > > YES that is correct. > >> I'll bet that 2657 bytes is the size of your "500 error" page. Can you >> check that? > > >> Does your servlet usually emit fewer than 2657 bytes? That's a pretty >> small response for many HTTP requests. > > Yes we don't send much data because it's just an acknwoledgment that's > parsed by home grown client application > >>>> at >>>> org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:746) >>>> at >>>> org.apache.coyote.http11.InternalInputBuffer$InputStreamInputBuffer.doRead(InternalInputBuffer.java:776) >>>> at >>>> org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:116) >>>> at >>>> org.apache.coyote.http11.InternalInputBuffer.doRead(InternalInputBuffer.java:705) >>>> 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) >>>> at >>>> com.intuit.engine.efp.efe.efileswitch.SwitchServlet.doPostOrGet(SwitchServlet.java:174) >>>> at >>>> com.intuit.engine.efp.efe.common.servlet.BaseServlet.doPost(BaseServlet.java:48) >> >> So, you're copying a byte array from the client. Where are you copying >> it to? > > Copying it to byte array. > > transmission = IOUtils.toByteArray(request.getInputStream()) > >>> Yes it always fail with desktop clients on the broadband/modem etc.. >>> Basically ones that are using our GUI application. >> >> So, regular web browsers like Firefox, MSIE, Safari? When you say "GUI >> application" do you mean a web-based application, or do you have >> something else that's running on the client? > > Something else which home grown application running on client > >>> Is there also a timeout where connection is closed when 'n' secs >>> expire irrespecitve of if the client and server are actively talking >>> to each other. >> >> That would be the SocketTimeout itself which I don't believe is settable >> through Tomcat's <Connector> configuration. The default socket timeout >> for ServerSocket is 0 (infinity: wait forever) so it must be that this >> default is being changed somewhere along the way. >> >> It's possible that the <Connector> configurator will pass-through any >> settings onto the socket (I haven't read the code). It would be simple >> to try adding "soTimeout=60000" (that's 60 seconds) to your <Connector> >> configuration and see if that works. Check the logs after startup to see >> if there's any warning that the "soTimeout" attribute didn't match >> anything useful. > > It didn't throw warning when I changed it. > >> - -chris >> -----BEGIN PGP SIGNATURE----- >> Version: GnuPG v1.4.10 (MingW32) >> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ >> >> iEYEARECAAYFAktXXFsACgkQ9CaO5/Lv0PCZAACfeJMBprxz6/hwoOmp9PXA8VwN >> Rq0An09fm8L6FT6PYP5KolY6R+li+C3H >> =ZVEw >> -----END PGP SIGNATURE----- >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org >> For additional commands, e-mail: users-h...@tomcat.apache.org >> >> > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org