Java 为什么连接器没有使用我的Tomcat 6执行器线程池?

Java 为什么连接器没有使用我的Tomcat 6执行器线程池?,java,tomcat,tomcat6,server.xml,Java,Tomcat,Tomcat6,Server.xml,My server.xml如下所示: <!--The connectors can use a shared executor, you can define one or more named thread pools--> <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="200" minSpareThre

My server.xml如下所示:

<!--The connectors can use a shared executor, you can define one or more named thread pools-->
<Executor  name="tomcatThreadPool" 
           namePrefix="catalina-exec-"
           maxThreads="200" 
           minSpareThreads="4"/>

<Connector executor="tomcatThreadPool"
           port="8080" protocol="HTTP/1.1"
           connectionTimeout="10000"
           maxKeepAliveRequests="1"
           redirectPort="8443" />

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

出于某种原因,看起来http-8080没有使用执行器,即使它也被指示,而jk-8009正在使用执行器,即使它没有被指示。管理器只是误报了还是我没有正确设置线程池?

我的猜测是,管理器正在报告作为连接器定义一部分设置的值,而没有报告来自执行器的值。执行人将按预期工作,只是经理没有正确报告

AJP接头的200值在这里有误导性,因为200是
maxThreads
(定义)的默认值;因为您没有为AJP连接器指定
maxThreads
,所以使用的是这个值

HTTP连接器正在报告无意义的值,因为它正在将其线程管理委托给执行器


要检查这是否都是真的,请尝试将执行器的
maxThreads
值更改为其他值。您应该看到AJP连接器的
maxThreads
保持在200(因为这是它的默认值)。

此连接器要创建的最大请求处理线程数,因此决定了可以处理的最大并发请求数。如果未指定,则此属性设置为200。如果执行器与此连接器关联,则忽略此属性,因为连接器将使用执行器而不是内部线程池执行任务。请注意,如果配置了执行器,则会正确记录为此属性设置的任何值,但会将其报告(例如,通过JMX)为-1,以表明未使用该值

http-8080: Max threads: -1 Current thread count: -1 Current thread busy: -1
jk-8009: Max threads: 200 Current thread count: 4 Current thread busy: 1