一尘不染

如何配置Tomcat使用1个以上的CPU?

tomcat

我们有一个新的客户端,当前我们正在对具有100个并发http线程的服务器(使用Jmeter)的生产进行压力测试。问题是,即使我们有2个Xeon处理器(每个CPU具有4核,总计为8核),我也只能看到tomcat使用4核,而不是8核。我认为4核仅属于1个处理器。其他4个线程实际上正在hibernate。

我从Apache文档中得到的印象是,如果我们有多CPU计算机,则应该配置acceptorThreadCount =“
2”:http :
//tomcat.apache.org/tomcat-6.0-doc/config/http.html

我们将默认连接器更改为tomcatThreadPool,其中maxThreads =“ 150” minSpareThreads =“
4”,并且连接器执行程序具有acceptorThreadCount =“ 2”。但是它仍然仅使用1个CPU。

知道如何配置以利用所有核心(或所有CPU的处理器)吗?


阅读 949

收藏
2020-06-16

共1个答案

一尘不染

有一些随意的想法可以帮助您。

JVM将在内部进行自己的任务调度。有时,如果JVM不认为某个CPU负担过重,它可能会为关键操作保留几个内核。因此,您会看到一些核心正在使用,而另一些则处于空闲状态。

另一种可能性是需要明确设置CPU亲和力。在Unix中,您可以检查与taskset命令一起使用的JVM选择了哪个CPU

taskset -p <pid>

在Windows中,调出任务管理器,转到“进程”选项卡,右键单击一个进程,然后选择“设置亲和力”。您可以看到已设置使用哪些CPU /内核。

我不知道Java / Tomcat中的启动参数来控制CPU使用率。我认为这应该在操作系统级别。我也不记得曾经阅读过有关编码JVM以限制所使用的CPU
/核数的信息。

2020-06-16