0

我似乎对重负载的多线程 Java 应用程序(使用客户端 JVM 开始)的处理器使用情况有一个奇怪的解读。

问题是即使在重负载下,处理器使用率也达到了 99.9%(使用 Debian Linux Kernel 2.6 上的顶级系统实用程序)。这看起来很奇怪,因为服务器是 8 核的,因此我希望某些东西会进入 >100% 的重负载领域。

是否有任何我应该考虑的 JVM 选项或我应该查看的任何系统参数?

我目前正在使用以下参数进行 JVM 启动:

  java -XX:PermSize=128M -XX:MaxPermSize=512M -Xss1024k -Xms512M -Xmx2048M
4

2 回答 2

1

观察到的处理器使用最可能的原因是您的应用程序存在并发瓶颈,这实际上将其平均限制为单个线程的速度。

更改 JVM 选项不太可能产生重大影响。您需要使用 Java 性能分析器找出瓶颈在哪里,并找出如何消除它们。

于 2012-11-26T11:08:39.533 回答
1

重负载的多线程 Java 应用程序(使用客户端 JVM 启动)。

这听起来是个坏主意。Client VM 专为小型轻量级应用程序设计,例如 32 位系统上的小程序。我建议您使用 Linux、Solaris 和 64 位 Windows 上的默认服务器 VM。

这看起来很奇怪,因为服务器是 8 核的,因此我希望某些东西会进入 >100% 的重负载领域。

这意味着您的应用程序实际上是单线程的。您可能正在尝试使用多个线程,但除非它们可以独立运行,否则它们一次不能运行多个线程。

是否有任何我应该考虑的 JVM 选项或我应该查看的任何系统参数?

命令行选项无法控制这一点。这完全取决于您的线程如何交互。

于 2012-11-26T11:14:19.383 回答