如果我给 server.tomcat.max-threads 一个很大的值来处理我的应用程序的负载,会发生啥?
Posted
技术标签:
【中文标题】如果我给 server.tomcat.max-threads 一个很大的值来处理我的应用程序的负载,会发生啥?【英文标题】:What happens if I give a large value to server.tomcat.max-threads to handle load on my application?如果我给 server.tomcat.max-threads 一个很大的值来处理我的应用程序的负载,会发生什么? 【发布时间】:2020-12-06 06:13:23 【问题描述】:周围有1000+ jobs running through our service in a day and around 70-80 jobs starting at the same time and running parallelly
。
为了处理这个问题,我们认为将最大线程数增加到很大的数量到我们的 Spring 应用程序的 server.tomcat.max-threads
属性应该可以工作,但我不完全相信拥有一个像800
这样的巨大数字到这个属性。
你能帮忙吗?
【问题讨论】:
该属性对请求处理线程没有帮助。 【参考方案1】:Tomcat 的默认安装将 HTTP 服务线程的最大数量设置为 200。实际上,这意味着系统最多可以同时处理 200 个 HTTP 请求。当并发 HTTP 请求的数量超过此计数时,未处理的请求将被放置在一个队列中,并在处理线程可用时为该队列中的请求提供服务。此默认队列长度为 100。在这些默认设置下,可同时生成 300 多个请求的大型 Web 负载将超过线程可用性,从而导致服务不可用 (HTTP 503)。
更多参考:https://docs.bmc.com/docs/brid91/en/tomcat-container-workload-configuration-825210082.html
How to run multiple servlets execution in parallel for Tomcat?
如果这是一个类似配置的批处理作业,你可以使用spring批处理。
【讨论】:
以上是关于如果我给 server.tomcat.max-threads 一个很大的值来处理我的应用程序的负载,会发生啥?的主要内容,如果未能解决你的问题,请参考以下文章