【发布时间】:2011-08-15 22:01:36
【问题描述】:
我在 CentOS 5.4 VPS 上运行 java 服务器。 VPS统计: - 2.5GHz 单核 CPU - 2GB 内存 - OpenJDK 1.6(也试过 Sun JDK 1.7)
Java 进程的 CPU 使用率一直很高。然后我去尝试分析java进程,看看是什么导致了速度变慢。我发现简单的方法(如 Random.nextInt(): 787ms)需要 1000 毫秒才能完成一次通话。大多数方法不应该花费这么长时间,并且在我的服务器上导致非常高的 CPU 使用率。这是 CentOS 的问题吗?还是Java?还是有什么我没有在我的 VPS 上正确配置的东西?
【问题讨论】:
-
根据所使用的随机方法,机器可能已经没有多少熵了,正在等待更多的熵出现,然后再生成下一个数字。
-
无论如何...获得一个随机的 int 应该不会花费将近一秒钟的时间。在虚拟环境中,您的虚拟服务器可能在严重超额订阅的硬件上,而使用 vmstat 等操作系统级别的工具是看不到的。如果您通过 SSH 连接到盒子,它会感觉反应灵敏还是反应迟钝?
-
当 java 不占用 97% 左右的 CPU 时,它是相当快的。我已经对此进行了测试
-
** 我已经在我的计算机上的 VirtualPC (Ubuntu 10.04) 上对此进行了测试,它似乎也有这个问题。另外,如果重要的话,我的 VPS 是基于 Xen 的。
-
@Adam:
Random不使用熵,使用熵的是SecureRandom。
标签: java linux profiling execution-time