【发布时间】:2012-02-20 23:11:56
【问题描述】:
我有一个在 Win2008 R2 64 位的 Tomcat 下运行的第 3 方 Java 应用程序。它是一个多线程应用程序,通过 SOAP 服务公开其 API。
当我查看“任务管理器性能”选项卡时,它看起来只使用了 8 个内核中的 4 个,无论我给它施加了多少负载。该应用程序的供应商上下发誓,他们没有做任何会影响 CPU 使用率的事情(而且他们最终也没有看到)。
我做了以下事情:
- 已检查 tomcat6.exe 的关联性 - 它正在使用所有处理器。
- 检查以确保 Java 服务实际上正在接收所有请求 - 确实如此。
- 查看了 tomcat 目录中的每个 .conf 文件,但没有看到任何相关内容(这也是我第一次接触 Tomcat - 所以,我真的不知道我在寻找什么)。
- 在 Java 1.5 和 1.6 下在 2 个不同的服务器上进行了尝试 - 结果相同。
部分硬件如下: 2 个 Xeon E5606 @ 2.13 Ghz 处理器,每个处理器有 4 个内核。 72 GB RAM - 24 GB 分配给 Tomcat。
为什么 Java 应用只使用了一半的内核?
【问题讨论】:
-
我可以想象你已经丢弃了磁盘 I/O 上有一个块?
-
@Luis 我不认为有,因为所有工作都在内存中的数据集上完成,但我发现这几乎相同question,它表明正在使用的日志框架正在减慢一切.如果是这样,我将把这个问题作为一个重复来结束。
-
听起来 Tomcat 只使用了一个物理处理器,但很难说为什么。看看这是否有帮助:oracle.com/technetwork/java/hotspotfaq-138619.html#perf_scaling
-
您是否尝试在同一 JVM 中运行虚拟应用程序,以尝试完全加载与您拥有的内核数量相同的线程?
-
@Luis 不,这不是 I/O。
标签: java performance tomcat windows-server-2008