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

标签 tomcat

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

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

我们已将默认连接器更改为 maxThreads="150"minSpareThreads="4"的 tomcatThreadPool,并将连接器执行器更改为具有 acceptorThreadCount="2"。但它仍然只使用 1 个 CPU。

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

最佳答案

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

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

另一种可能性是需要显式设置 CPU 亲和性。 在 Unix 中,您可以通过 taskset command 检查已选择 JVM 使用哪个 CPU。::

taskset -p <pid>

在 Windows 中,调出您的任务管理器,转到进程选项卡,右键单击一个进程并选择设置关联。您可以看到设置使用了哪些 CPU/核心。

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

关于tomcat - 如何配置 Tomcat 使用 1 个以上的 CPU?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3734229/

相关文章:

java - eclipse tomcat 为什么它不断复制 servlet api jar

java - 如何使用 GET 请求在 tomcat 中保留 utf-8 字符编码

apache - 如何在 apache tomcat 中自动生成堆转储?

java - 找不到 “http://java.sun.com/jsp/jSTL/core” 的标记库描述符

java - 如何授予在tomcat下运行的spring应用程序在另一个用户目录上写入的权限

tomcat - 如何将我的应用程序参数添加到 localhost_access_log.<date>.text 文件

templates - Jade 兰 CMS : Introducing Magnolia tutorial not working with Magnolia CE and EE

java - sessionID 是如何生成的?

java - web.xml 中的 session 超时不适用于 weblogic 服务器

tomcat - Spring Security Tomcat 6.x 与 Tomcat 7.x 访问此资源需要完全身份验证