tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrew Skiba" <ski...@gmail.com>
Subject backlog measurement
Date Thu, 10 Jan 2008 08:47:44 GMT
Hello,

I want to contribute a custom SocketFactory allowing to analyze the
utilization of acceptConnection attribute of a Connector. In a properly
configured production system, there should be rare situations where
connections wait for a worker thread to be handled. Our client complained on
high latency of web requests, but the measurement on servlet did not show
high latency. So we wanted to know the number of connections which wait in
socket backlog and were not accepted yet.

I solved this problem by writing a custom SocketFactory, which accepts
connections immediately and puts it in my queue until a call to accept()
will take them. So the number of waiting connections can be monitored via
JMX.

To activate this factory, the declaration of the corresponding Connector in
server.xml should be changed like in the following example.

 <Connector port="8080" maxHttpHeaderSize="8192"
               maxThreads="10" minSpareThreads="5" maxSpareThreads="7"
               enableLookups="false" redirectPort="8443" acceptCount="10"
               connectionTimeout="2000" disableUploadTimeout="true"

               socketFactory="
org.apache.tomcat.util.net.BacklogMeasuringServerSocketFactory"/>


No changes in existing classes are required.

Please review the code in the attachment.


Andrew Skiba.

Mime
View raw message