Peter Warren
2009-02-12 03:24:05 UTC
Looking for nio configuration tips for 6.0.18...
I have an ajax app that uses a single socket connection for sending
standard http requests and receiving responses, and another socket
connection to listen via comet for messages pushed out by the server.
A comet timeout is generated every 50 seconds, and the server then
closes the client connection. The client immediately reconnects.
This heartbeat lets me know the client is still alive.
In load testing with JMeter, I find that when running somewhere
between 100 & 200 threads (1/2 making regular http requests and 1/2
making comet listen requests that connect and then wait until the
server closes the connection) the comet timeout events get generated
more and more slowly. When they should be generated every 50 seconds,
after only a little over a minute into the load test, the timeouts
slow to sometimes over 60 seconds. When running 100 threads, the
system works fine with the timeouts occurring less than every 60
seconds indefinitely.
I'm not much of a tomcat administrator and am trying to figure out how
to best to tune it for my app. This is what my connector config looks
like now. Basically I'm throwing the kitchen sink at it, and then
planning on fine-tuning it once I find something that makes a
difference.
<Connector port="80" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="1000"
acceptCount="18192"
acceptorThreadCount="2"
acceptorThreadPriority="10"
pollerThreadCount="2"
pollerThreadPriority="10"
maxKeepAliveRequests="-1"
command-line-options="-Dorg.apache.tomcat.util.net.NioSelectorShared=false"
selectorPool.maxSelectors="500"
redirectPort="8443"
enableLookups="false" />
A couple notes:
the acceptorThreadPriority and pollerThreadPriority are set using ints
because I get the following warnings in the catalina log when trying
to use the documented notation:
WARNING: [SetAllPropertiesRule]{Server/Service/Connector} Setting
property 'pollerThreadPriority' to 'java.lang.Thread#MAX_PRIORITY' did
not find a matching property.
I also get the warning when trying to use keepAliveTimeout. Is this
property available for the nio connector?
WARNING: [SetAllPropertiesRule]{Server/Service/Connector} Setting
property 'keepAliveTimeout' to '120000' did not find a matching
property.
I also get the warning when trying to use command-line-options, or am
I supposed to really be setting this property on the command line?
WARNING: [SetAllPropertiesRule]{Server/Service/Connector} Setting
property 'command-line-options' to
'-Dorg.apache.tomcat.util.net.NioSelectorShared=false' did not find a
matching property.
Thanks for any tips,
Peter
I have an ajax app that uses a single socket connection for sending
standard http requests and receiving responses, and another socket
connection to listen via comet for messages pushed out by the server.
A comet timeout is generated every 50 seconds, and the server then
closes the client connection. The client immediately reconnects.
This heartbeat lets me know the client is still alive.
In load testing with JMeter, I find that when running somewhere
between 100 & 200 threads (1/2 making regular http requests and 1/2
making comet listen requests that connect and then wait until the
server closes the connection) the comet timeout events get generated
more and more slowly. When they should be generated every 50 seconds,
after only a little over a minute into the load test, the timeouts
slow to sometimes over 60 seconds. When running 100 threads, the
system works fine with the timeouts occurring less than every 60
seconds indefinitely.
I'm not much of a tomcat administrator and am trying to figure out how
to best to tune it for my app. This is what my connector config looks
like now. Basically I'm throwing the kitchen sink at it, and then
planning on fine-tuning it once I find something that makes a
difference.
<Connector port="80" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="1000"
acceptCount="18192"
acceptorThreadCount="2"
acceptorThreadPriority="10"
pollerThreadCount="2"
pollerThreadPriority="10"
maxKeepAliveRequests="-1"
command-line-options="-Dorg.apache.tomcat.util.net.NioSelectorShared=false"
selectorPool.maxSelectors="500"
redirectPort="8443"
enableLookups="false" />
A couple notes:
the acceptorThreadPriority and pollerThreadPriority are set using ints
because I get the following warnings in the catalina log when trying
to use the documented notation:
WARNING: [SetAllPropertiesRule]{Server/Service/Connector} Setting
property 'pollerThreadPriority' to 'java.lang.Thread#MAX_PRIORITY' did
not find a matching property.
I also get the warning when trying to use keepAliveTimeout. Is this
property available for the nio connector?
WARNING: [SetAllPropertiesRule]{Server/Service/Connector} Setting
property 'keepAliveTimeout' to '120000' did not find a matching
property.
I also get the warning when trying to use command-line-options, or am
I supposed to really be setting this property on the command line?
WARNING: [SetAllPropertiesRule]{Server/Service/Connector} Setting
property 'command-line-options' to
'-Dorg.apache.tomcat.util.net.NioSelectorShared=false' did not find a
matching property.
Thanks for any tips,
Peter