Hallo Herr Beier,

On 02.03.2012 11:19, Beier Michael wrote:
Hi all,

we're running tomcat 7.0.23 on sun jdk 1.6.0_29, connected via ajp to httpd 
2.2.21 using mod_jk 1.2.32.

I observed the behavior, that tomcat keeps threads in its ajp pool in keepalive 
state, regardless of which timeouts (connectionTimeout and keepAliveTimeout) 
are configured in tomcat.
I tested three connector configurations and with all I see connections in tomcat server 
status where the "Time" value amounts up to several million milliseconds, which 
is more than configured in connectionTimeout/keepAliveTimeout.
This results in having 60-80 percent of the thread pool being in state 
"keepAlive".

1)
     <Connector port="8309" protocol="AJP/1.3"
                maxThreads="200" redirectPort="8343" 
tomcatAuthentication="false"
                keepAliveTimeout="300000" connectionTimeout="300000" />
2)
     <Connector port="8309" protocol="AJP/1.3"
                maxThreads="200" redirectPort="8343" 
tomcatAuthentication="false"
                keepAliveTimeout="300000" />
3)
     <Connector port="8309" protocol="AJP/1.3"
                maxThreads="200" redirectPort="8343" tomcatAuthentication="false" 
/>

In mod_jk the connection_pool_timeout is set to the same value as 
connectionTimeout (only in seconds, not milliseconds).
I verified that the values are set correctly querying the parameters via JMX.

How can I avoid having so many threads in keepalive state - I don't have any 
idea at the moment and can't see that there is an error in my configuration.

Educated guess: you have an interval based cping/cpong connection check configured for mod_jk.

Any cping will wake up the thread waiting for data on the connection and will reset the timeouts. But a cping will be ommediately answered by a cpong and not update the "last request" time. So that would explain, why your connections never timeout though the Manager shows constantly increasing times for the last request seen.

Usually that feature would be activated for mo_jk using the JkWatchdogInterval in combination with ping_mode "I" or "A". In case you are unsure about the effects of the various jk configuration options, you might post them here (remove sensitive data before posting).

I'd say the current behaviour is a bit problematic, but I don't see an easy improvement. So if your focus is on keeping the number of idle connections low you would need to switch off interval cpings. Cping before rquests and after opening connections are fine (improves stability and reduces the likeliness of race conditions).

HTH

Rainer Jung

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to