下午好。我的 CentOS 6(64 位)服务器上的 Java VM 遇到了一个非常令人费解的问题。它是具有四核 CPU(具有超线程)、16GB RAM 和 2TB 硬盘空间(在软件 RAID1 上)的服务器。我想我会在这里问,因为根据常见问题解答,关于开发人员使用的“常用工具”的问题是适当的。希望有人可以对这个问题有所了解。
我每天 24 小时在服务器上运行一个 Java 软件。今天早些时候(在服务器区域设置的午夜后几个小时检测到,这是值得注意的,因为这是本月的第一天)我收到连接到该软件的用户报告,因为客户端突然变得无法使用。JVM 从未中断或重新启动。上一次重启是在几天前,从那以后一直正常运行(使用大约 5% 或更少的 CPU,这是正常的)。
这一次,当我检查该进程时,它实际上正在吞噬所有可以与服务器上运行的其他应用程序搏斗的 CPU 时间(如 top 所报告的那样),或者超过 100%(如 ps 所报告的那样)。我尝试停止并重新启动应用程序,但一旦它运行,CPU 使用率会立即再次飙升至 100% 以上。内存使用正常。我尝试了不同的 JVM 标志,但无济于事。我尝试下载最新版本的软件并进行全新安装,但这也无济于事。最后,我尝试下载另一个完全不同的 Java 软件,但是当我在服务器上运行它时,它遇到了同样的问题。
当我下载该软件并在我的计算机上运行它时,CPU 使用率是正常的。因此,我假设服务器出错了,但我无法想象它可能是什么。服务器的 JVM 是最新的,来自标准的存储库包(没有任何定制)。
从 java -版本:
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.3) (rhel-1.48.1.11.3.el6_2-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)
来自 uname -a:
2.6.32-131.21.1.el6.x86_64 #1 SMP Tue Nov 22 19:48:09 GMT 2011 x86_64 x86_64 x86_64 GNU/Linux
来自 centos-release/redhat-release/system-release:
CentOS release 6.2 (Final)
免费报告大约 14.5gb 可用 RAM。df 报告 /home 分区(有问题的软件及其所有文件所在的位置)中有大约 1.4tb 的可用磁盘空间。
有任何想法吗?请询问您是否需要更多数据,并随时建议我尝试/检查的程序。在查找问题时,我发现有几个人在 JVM 窃取 CentOS 上的所有 CPU 时遇到问题,但似乎没有一个与我的问题相符。