server.tomcat.max-线程 VS corePoolSize VS spring.datasource.tomcat.max
server.tomcat.max-threads VS corePoolSize VS spring.datasource.tomcat.max
我有一个 Spring Boot REST 异步应用程序,想要调整:
- 来自客户端的连接线程(希望 REST 请求并行进行)
- 我的服务层中@Async 方法的线程数
- 数据库连接池
浏览文档和站点发现的可能性:
corePoolSize value=... VS server.tomcat.max-threads = ... - 有什么区别?
spring.datasource.hikari.maximum-pool-size= ... VS spring.datasource.tomcat.max... = ... - 有什么区别?
假设您正在使用 Spring Boot 2.1 并且没有更改默认设置(使用 Tomcat 作为嵌入式容器,使用 Hikari 作为连接池)。
Tomcat 请求处理线程
要修改线程数(tomcat 默认情况下已经使用 200,所以为什么需要更改它!)使用 server.tomcat
命名空间中的属性(那些特定于 Tomcat!。所以用server.tomcat.max-threads
来控制请求处理的数量。
要限制并发 HTTP 连接数,请使用 server.tomcat.max-connections
(默认值 10000)。这基本上是请求处理线程用来 pick/steal 工作的处理队列。
任务执行的线程数
要控制 Spring Boot 2.1 中默认创建的 TaskExecutor
使用的线程数,请使用 spring.task.execution
命名空间中的属性。因此,使用 spring.task.execution.pool.max-threads
设置最大线程数以用于 @Async
。 spring.task.execution.pool.core-size
控制核心(最小)池大小。通过 spring.task.execution.pool.queue-capacity
增加 max-threads
属性 而不限制队列大小没有任何效果。默认队列大小是无限的,任何事情都不会导致线程数量增加到超过 core-size
。
连接池属性
最后为您的连接池指定连接(Hikari 的默认值为 10!)。使用 spring.datasource
命名空间属性,特别是连接池的属性(默认为 Hikari,因此 spring.datasource.hikari
中的 spring.datasource.tomcat
用于 Tomcat JDBC在 Spring Boot before 2.0 上默认使用的连接池)。所以设置 spring.datasource.hikari.maximum-pool-size
来管理最大线程数。
备注
它们彼此没有任何关系,也应该相互混淆(恕我直言,这在参考指南中已经很清楚,每个都有不同的用途)。有关常用属性列表,请参阅 Spring 引导参考指南的 Appendix A。
我有一个 Spring Boot REST 异步应用程序,想要调整:
- 来自客户端的连接线程(希望 REST 请求并行进行)
- 我的服务层中@Async 方法的线程数
- 数据库连接池
浏览文档和站点发现的可能性:
corePoolSize value=... VS server.tomcat.max-threads = ... - 有什么区别?
spring.datasource.hikari.maximum-pool-size= ... VS spring.datasource.tomcat.max... = ... - 有什么区别?
假设您正在使用 Spring Boot 2.1 并且没有更改默认设置(使用 Tomcat 作为嵌入式容器,使用 Hikari 作为连接池)。
Tomcat 请求处理线程
要修改线程数(tomcat 默认情况下已经使用 200,所以为什么需要更改它!)使用 server.tomcat
命名空间中的属性(那些特定于 Tomcat!。所以用server.tomcat.max-threads
来控制请求处理的数量。
要限制并发 HTTP 连接数,请使用 server.tomcat.max-connections
(默认值 10000)。这基本上是请求处理线程用来 pick/steal 工作的处理队列。
任务执行的线程数
要控制 Spring Boot 2.1 中默认创建的 TaskExecutor
使用的线程数,请使用 spring.task.execution
命名空间中的属性。因此,使用 spring.task.execution.pool.max-threads
设置最大线程数以用于 @Async
。 spring.task.execution.pool.core-size
控制核心(最小)池大小。通过 spring.task.execution.pool.queue-capacity
增加 max-threads
属性 而不限制队列大小没有任何效果。默认队列大小是无限的,任何事情都不会导致线程数量增加到超过 core-size
。
连接池属性
最后为您的连接池指定连接(Hikari 的默认值为 10!)。使用 spring.datasource
命名空间属性,特别是连接池的属性(默认为 Hikari,因此 spring.datasource.hikari
中的 spring.datasource.tomcat
用于 Tomcat JDBC在 Spring Boot before 2.0 上默认使用的连接池)。所以设置 spring.datasource.hikari.maximum-pool-size
来管理最大线程数。
备注
它们彼此没有任何关系,也应该相互混淆(恕我直言,这在参考指南中已经很清楚,每个都有不同的用途)。有关常用属性列表,请参阅 Spring 引导参考指南的 Appendix A。