我正在使用 Spring Boot 应用程序开发应用程序服务器,但现在我想知道 Spring 中默认的最大(客户端请求)线程池大小是多少以及如何自定义该值?
假设您使用的是嵌入式Tomcat,Spring Boot提供了一个属性来控制客户端请求线程池的大小。它的默认值为零,这使得 Tomcat 使用默认值 200。如果您使用的是 Spring Boot 2.3 或更高版本,则此属性名为
server.tomcat.threads.max
。在 Spring Boot 的早期版本中,该属性名为 server.tomcat.max-threads
。
要自定义此线程池的大小,您应该在
application.properties
或 application.yml
文件中为该属性指定一个非零值。
由于
server.tomcat.max-threads
自 Springboot 2.3 起已弃用,现在在 Spring server.tomcat.threads.max
中使用 application.properties
。默认值为 200。
正如其他答案中所述,当使用带有嵌入式Tomcat的Spring Boot时,控制线程池大小的设置是
server.tomcat.threads.max
。
但是,还有一个附加设置 –
server.tomcat.max-connections
– 它可以影响服务器允许的并发 HTTP 请求数。
简述:
server.tomcat.threads.max
设置HTTP请求线程池的大小server.tomcat.max-connections
设置服务器允许的最大 HTTP 连接数server.tomcat.max-connections
小于 server.tomcat.threads.max
,服务器将不会使用线程池中的所有可用线程,而是将活动请求数限制为最大连接数server.tomcat.threads.max
的详细信息:
最大工作线程数。如果启用虚拟线程则没有效果。
spring.threads.virtual.enabled
) 默认情况下处于禁用状态,但这是另一个可能会更改服务器行为的配置设置。请参阅:https://docs.spring.io/spring-boot/appendix/application-properties/index.html#application-properties.core.spring.threads.virtual.enabled
server.tomcat.max-connections
的详细信息:
server.tomcat.max-connections
设置为 小于 于
server.tomcat.threads.max
,则将使用较小的限制。
默认为8192。
只要
server.tomcat.connection-timeout
server.tomcat.max-connections
) 将允许连接到达服务器并等待,直到 Tomcat 线程可用于处理请求。