为什么连接器不使用我的Tomcat 6执行程序线程池?

我的server.xml如下所示:

    

但是,在Tomcat管理器( http:// localhost / manager / status )中,它显示如下

 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 

由于某种原因,它看起来像http-8080没有使用执行程序,即使它也被指示并且jk-8009正在使用执行程序,即使它没有被指示。 管理员是否只是误报或我没有正确设置线程池?

我的猜测是管理器报告了作为连接器定义的一部分设置的值,而不报告执行程序中的值。 遗嘱执行人将按预期工作,但在经理中没有正确报告。

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

HTTP连接器报告无意义值,因为它将其线程管理委派给执行程序。

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

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