tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jess Holle <>
Subject Re: Logging servlet time and connections
Date Thu, 23 Jul 2009 19:52:11 GMT
Beware of acceptCount.

If you use this with the AJP connector and don't enable the native 
connector, then you won't get what you expect -- and last I checked the 
documentation gave no warning of this.

In this scenario once you exceed maxThread minus 2 simultaneous 
connections (there's a clear off by 2 error here somewhere) any 
additional simultaneous connections go into some sort of weird limbo, 
are never processed, and eventually time out.  This is irrespective of 
the value of acceptCount used, which is simply ignored in this case!  
You'd /expect/ a warning to be logged if acceptCount is non-zero and is 
simply going to be ignored.  You'd also expect 503's for requests that 
are not going to be handled -- not this weird limbo thing.

Overall this is a pretty big gotcha -- especially for those of us 
supporting enough odd ball platforms that continuously building the 
native connector for all of these platforms is a non-starter.  [One 
might say just build it once, but we've also had issues with the native 
connector that are not reproducible with the pure-Java connector.]

This has to be one of the ugliest Tomcat warts I've ever run into.

Jess Holle

Caldarale, Charles R wrote:
>> From: []
>> Subject: RE: Logging servlet time and connections
>> It could be user sessions if thats whats available.
> You can implement an HttpSessionListener to track sessions coming and going within a
webapp.  See the servlet spec for details
>> Basically the acceptCount for the connector is much higher 
>> than the maxThread count.
> The two values are unrelated, so one being higher than the other is irrelevant.  Tomcat
just passes the acceptCount to the TCP/IP stack, and has no means of examining what the TCP/IP
stack does with it
>> So some connections are being held (queued?) without processing.
> Are you sure?  Regardless, such information is not available to Tomcat, but it /may/
be available from your OS
>> No, just when the servlet starts processing and when its complete
>> (we do know the exact servlet we are worried about).
> It's probably easiest to add logging to the particular servlet to get that specific information.
 Once the logging calls are added, you can control whether or not they are recorded by manipulating
> You may be able to get Tomcat to display such fine-grained detail, but it would likely
require setting a logging level of DEBUG, which would get way too much data written and be
a performance problem.
>  - Chuck
is thus for use only by the intended recipient. If you received this in error, please contact
the sender and delete the e-mail and its attachments from all computers.
> ---------------------------------------------------------------------
> To unsubscribe, e-mail:
> For additional commands, e-mail:

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message