我们有一个新客户端,目前我们正在使用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
我们已将默认连接器更改为tomcatThreadPool,其中maxThreads ="150"minSpareThreads ="4",连接器执行器更改为acceptorThreadCount ="2".但它仍然只使用1个CPU.
知道如何配置利用所有核心(或所有CPU的处理器)?
一些随机的想法可以帮助你。
JVM 将在内部进行自己的任务调度。有时,如果 JVM 不认为某个 CPU 负担过重,它可能会保留一些核心用于关键操作。因此,您会看到一些核心正在使用,而其他核心则闲置。
另一种可能性是需要显式设置 CPU 关联性。在 Unix 中,您可以使用taskset 命令检查 JVM 已选择使用哪个 CPU ::
taskset -p <pid>
Run Code Online (Sandbox Code Playgroud)
在 Windows 中,打开任务管理器,转到进程选项卡,右键单击进程并选择设置关联性。您可以查看设置要使用的 CPU/核心。
我不知道 Java/Tomcat 中是否有启动参数来控制 CPU 使用率。我相信这应该是在操作系统级别。我也不记得曾经读过有关 JVM 被编码来限制所使用的 CPU/内核数量的信息。
| 归档时间: |
|
| 查看次数: |
28081 次 |
| 最近记录: |