gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 05:59:40 25 4
gpt4 key购买 nike

我的 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" />

但是,在 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 的默认值(定义为 here );因为您没有为 AJP 连接器指定 maxThreads,所以这是使用的值。

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

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

关于java - 为什么我的 Tomcat 6 执行器线程池没有被连接器使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2761618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com