Spring Boot 嵌入式 Tomcat 线程池创建开销
Posted
技术标签:
【中文标题】Spring Boot 嵌入式 Tomcat 线程池创建开销【英文标题】:Spring Boot Embedded Tomcat Thread Pool Creation Overhead 【发布时间】:2016-04-12 01:56:25 【问题描述】:我想知道是否有人知道向 tomcat 线程池添加更多线程的性能开销信息?
我们一直看到我们的应用程序存在问题,并且所有内容都指向 tomcat 向线程池添加更多线程的问题。这是真的吗?向线程池添加更多线程会导致响应时间变慢吗?
我们正在使用 Spring Boot 及其嵌入式 tomcat 运行 Java REST API。如果我们的问题确实是tomcat向池中添加了更多线程造成的,那么有没有办法在Spring中设置一个最小值呢?根据这个线程 MinSpareThreads 不再存在。 https://github.com/spring-projects/spring-boot/issues/3753
如果没有办法通过 Spring Embedded Tomcat 增加最小线程数,那么您还可以使用哪些其他工具用于线程池?
编辑: 我附上了一个线程配置文件。个人资料不是有问题的时间,而是稍后。
【问题讨论】:
你看到TomcatEmbeddedServletContainerFactory的建议了吗? @Marged 我没看到。我知道容器工厂,但据我所知,它只是提供了对使用 application.properties 的更多控制。 这也可能与某些(同步的)缓存机制不再正常工作有关,例如参见this question 和我对processorCache
的回答的评论。尝试分析以查看线程在哪里(以及为什么)等待。
@vanOekel 我已经用线程配置文件更新了这个问题。然而,我不是很精通阅读它们。
由于缺乏答案,我假设没有人测量过向线程池添加更多线程的性能,以及这是否是响应时间缓慢的实际原因。
【参考方案1】:
我们现在可以添加配置的两个边缘:
wilkinsona 于 2016 年 4 月 19 日发表评论 -> maxThreads 一直是可配置的。 minSpareThreads 现在也可以配置(参见 34eb369)
Add configuration option for maxSpareThreads - (Old bug, finally fixed)
【讨论】:
以上是关于Spring Boot 嵌入式 Tomcat 线程池创建开销的主要内容,如果未能解决你的问题,请参考以下文章
在 Spring Boot 上更改嵌入式 tomcat 版本
嵌入式 Tomcat 中带有 JSP 标签库的 Spring-Boot