gpt4 book ai didi

java - server.tomcat.max-threads VS corePoolSize VS spring.datasource.tomcat.max

转载 作者:行者123 更新时间:2023-12-01 14:10:54 28 4
gpt4 key购买 nike

我有一个 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)。这基本上是请求处理线程用来从中挑选/窃取工作的处理队列。

    任务执行的线程数

    用于控制默认创建的线程数TaskExecutor在 Spring Boot 2.1 中使用 spring.task.execution 中的属性命名空间。所以使用 spring.task.execution.pool.max-threads设置用于 @Async 的最大线程数. spring.task.execution.pool.core-size控制核心(最小)池大小。增加max-threads属性,而不通过 spring.task.execution.pool.queue-capacity 限制队列大小没有效果。默认队列大小是无限制的,并且一切都不会导致线程数超过 core-size .

    连接池属性

    最后为您的连接池指定连接(Hikari 的默认值为 10!)。使用 spring.datasource命名空间属性,特别是你的连接池的一个(默认是 Hikari,所以 spring.datasource.hikari 中的那些,spring.datasource.tomcat 是 Tomcat JDBC 连接池在 Spring Boot 2.0 之前的默认值)。所以设置spring.datasource.hikari.maximum-pool-size管理最大数量的线程。

    笔记

    它们彼此没有任何关系,也应该相互混淆(恕我直言,这在引用指南中已经很清楚,每个都有不同的目的)。见 Appendix A Spring Boot 引用指南的常见属性列表。

    关于java - server.tomcat.max-threads VS corePoolSize VS spring.datasource.tomcat.max,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54126131/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com