【发布时间】:2022-01-23 09:38:26
【问题描述】:
我使用以下配置运行 Spring Boot 2.6.x 应用程序(与 Tomcat 9.56.x 捆绑):
server.tomcat.accept-count = 100
server.tomcat.threads.max = 1000
server.tomcat.threads.min-spare = 10
在具有 16 个 CPU 内核和 32GB 内存的机器上
我测试了我的服务器的性能负载,在此期间我打开了多个 (500) 个连接,每个连接每 1 秒发送一个 HTTP 请求。
预期行为:tomcat 将尝试使用尽可能多的线程以最大化吞吐量。
实际行为:tomcat 始终坚持使用 10 个线程(由“min-spare”配置),并且从不添加超过配置数量的线程。我知道通过观察它的 JMX 端点(currentThreadCount 总是 10)。尽管它肯定无法及时处理所有请求,因为我的客户端中有越来越多的待处理请求。
谁能解释我这样的行为? Tomcat(NIO线程池)应该根据什么来决定是否添加线程?
【问题讨论】:
标签: spring-boot tomcat