我有一个在低内存 CentOS 上运行的 tomcat 7。目前它有 2 个用于端口 80 和 443 的连接器。重要的配置选项包括:
<Connector port="80" protocol="HTTP/1.1" executor="tomcatThreadPool"
connectionTimeout="10000"
keepAliveTimeout="60000"
<Connector port="443" protocol="HTTP/1.1" executor="tomcatThreadPool"
SSLEnabled="true" scheme="https" secure="true"
connectionTimeout="10000"
keepAliveTimeout="60000"
两个连接器都绑定到一个执行器:
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="100" minSpareThreads="3"
maxIdleTime="120000" />
当 tomcat 首次启动时,它会启动大约 50 个线程。大约 15-20 个用户连接到 Web 应用程序后,线程数会增加到大约 60 个。(我使用命令计算了 tomcat 线程数ps -eLf | grep java |grep tomcat |wc -l
)
我每分钟大约有 4 个连接,由于我的应用程序的性质,这个数字不会超过 5 个。因此,我希望 tomcat 启动尽可能少的线程。由于我已将最少 3 个备用线程配置为 3 个,并将 keepalive 设置为 2 分钟,因此它不应该超过 20 个左右。但我错了。
如何将 Tomcat 线程数限制为最小值(例如 20 或 30)?
答案1
根据本文档可以使用以下参数配置最小线程数:
Attribute
Description
minSpareThreads
(int) The minimum number of threads always kept alive, default is 25
根据本文档可以按如下方式实施:
<Connector port="8080" address="localhost"
minSpareThreads="20" />
At server startup, the HTTP Connector will create a number of processing threads based on the value configured for the minSpareThreads attribute.