【发布时间】:2013-06-12 19:40:02
【问题描述】:
我们有一个 Java 应用程序一直显示 100% 的 CPU 使用率。当我注意到top 命令的一些奇怪结果时,我试图找出是否有一些主导线程。
如果我运行top,它会显示一个具有 100% CPU 时间的 java 进程。然后我输入H 来显示线程,它首先显示几个 Java 线程,每个线程都100%。然而,下一次刷新,它再次显示了一个不同批次的几个 Java 线程,每个线程都具有 100% 的 CPU。下一次刷新,又一批。这种情况一直持续下去,几个刷新周期会通过 100 个左右的 100% CPU 线程。最后,它使用了十几个 Java 线程,每个线程都有大约 10% 的 CPU 时间。这组“最终”线程与在开始时显示 100% CPU 时间但现在每个只有 10% 的线程相同。如果直接运行top -H,我直接进入了最终集。
我的直觉是,Java 线程的 100% CPU 有点假。但我就是找不到解释。
我正在使用 Debian Wheezy 盒子。
【问题讨论】:
-
今天刚刚了解到
top命令在 15 分钟窗口上计算指数加权移动平均线 (EWMA)。但仍然没有解释我看到了什么。
标签: java linux multithreading top-command