首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >针对8核系统的性能调优tomcat

针对8核系统的性能调优tomcat
EN

Stack Overflow用户
提问于 2018-08-30 18:34:24
回答 1查看 111关注 0票数 0

我有一个运行在8核系统上的tomcat应用程序。我观察到,当将maxthread count从16更改为2时,吞吐量为13 req/sec的性能有了显著的提高

因此,开始打印活动线程数,似乎当tomcat的maxthread设置为2时,活动线程的平均值为8,因此基本上有8个线程在8个内核上运行,这可能是最好的结果

但是,当我将吞吐量增加到30-40req/sec时,我看到请求在排队。因此,这里发生的情况是,由于只有maxthreads2请求开始堆积。

然后,当我将maxThreads设置为非常高的值(如10k )时,我看到JVM再次花费了很长时间进行上下文切换。

我的问题是,tomcat中有没有什么属性可以让我指定在JVM中并行处理多少个请求。

acceptCount属性不会有帮助,因为它只定义了请求的阈值。

还有一个名为acceptorThreadCount的属性,它被定义为用于接受连接的线程数,这是我需要调优的属性,还是有其他属性,或者我在这里遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2018-08-30 18:46:22

根据maxThreads的Connector documentation (我假设这就是您更改maxThreads配置的地方):

此连接器要创建的请求处理线程的最大数量,因此它决定了可以处理的并发请求的最大数量。如果未指定,则此属性设置为200。如果某个executor与此连接器相关联,则会忽略此属性,因为连接器将使用executor而不是内部线程池来执行任务。请注意,如果配置了executor,则为该属性设置的任何值都将被正确记录,但它将被报告(例如,通过JMX)为-1,以表明它未被使用。

将线程数设置为高于可用核心的数量没有问题(正好相反),因为并非每个核心都在工作(通常它们都在等待外部输入,例如来自数据库的数据)。

如果我没有抓住要点,而您更改了不同的maxThreads配置,请澄清。另一方面,您的问题是关于指定并行处理多少请求的配置:如果您引用了不同的maxThreads,那么tomcat的默认值是200,并且可以在连接器的配置中更改它(或者,正如文档所说,使用Executor)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52094890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档