Unable to configure tomcat executor?
I am having bad performance with an application that uses a custom tomcat executor when run in SpringSource DM Server 2.0.2.RELEASE vs standalone tomcat 6.0.18. I am suspicious that the executor/connector config is not working.
Below is my tomcat-server.xml file using with the 2.0.2.RELEASE.
As you can see, I have configured a custom Executor named "streamReceiverThreadPool" with 300 threads and configure the port 80 Connector to use it as well as Http11NioProtocol.
However, when running the server and inspecting it with JMX, I see:
- There are no JMX MBean nodes for /Catalina/Conector or /Catalina/Executor as there are with a standalone tomcat install.
- There is a /Catalina/ThreadPool/http-80 MBean with modelerType="org.apache.tomcat.util.net.NioEndpoin t" (seems like that got picked up correctly) but maxThreads="200".
Code:
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JasperListener" />
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="com.springsource.server.web.tomcat.ServerLifecycleLoggingListener"/>
<Service name="Catalina">
<Executor name="streamReceiverThreadPool" namePrefix="catalina-exec-"
maxThreads="300" minSpareThreads="30"/>
<Connector executor="streamReceiverThreadPool"
port="80" protocol="org.apache.coyote.http11.Http11NioProtocol"
enableLookups="false"
connectionTimeout="40000"
maxKeepAliveRequests="1"
keepAliveTimeout="0"
connectionLinger="-1"
acceptCount="10000"
acceptorThreadCount="4"
processCache="300"
socket.processorCache="5000"
socket.tcpNoDelay="true"
socket.soLingerOn="false" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.JAASRealm" appName="dm-kernel"
userClassNames="com.springsource.kernel.authentication.User"
roleClassNames="com.springsource.kernel.authentication.Role"/>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="serviceability/logs/access"
prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
<Valve className="com.springsource.server.web.tomcat.ApplicationNameTrackingValve"/>
</Host>
</Engine>
</Service>
</Server>