如何限制Tomcat线程数?

如何限制Tomcat线程数?

我有一个在低内存 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

根据本文档可以使用以下参数配置最小线程数:

AttributeDescription
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.

相关内容