3

我在 CentOS 5.4 VPS 上运行 java 服务器。VPS 统计数据: - 2.5GHz 单核 CPU - 2GB RAM - OpenJDK 1.6(也尝试过 Sun JDK 1.7)

我一直在经历 java 进程的 CPU 使用率非常高。然后我去尝试分析java进程,看看是什么导致了速度变慢。我发现简单的方法(例如 Random.nextInt(): 787ms)需要 1000 毫秒才能完成一次通话。大多数方法不应该花这么长时间,并且在我的服务器上导致非常高的 CPU 使用率。这是 CentOS 的问题吗?还是Java?或者有什么我没有在我的 VPS 上正确配置的东西?

4

2 回答 2

3

与其在源代码中添加计时,不如尝试使用 BTrace 之类的 java 代理:http: //kenai.com/projects/btrace,它可以让您掌握所需的信息,但不会弄乱您的应用程序源代码。

BTrace 可以与可视化器相结合,例如 EurekaJ(我创建的一个用于可视化 BTtrace 输出的项目):http ://eurekaj.haagen.name

其他商业分析选项也可用,例如 JProfiler 或 YourKit,但它们确实带有价格标签。

于 2011-09-21T19:43:08.983 回答
0

Can you reproduce your timings when you measure the processing time within the program, i.e. something like the following:

long start = System.currentTimeMillis();

/* Your code */

[...]    

long time = System.currentTimeMillis() - start;

System.out.println("Measurement: " + time);

Also, what do you mean by "it is fast when Java is not taking 97% of the CPU"? Why is Java taking the 97% in the first place? Are there multiple threads running? Is your computation short or long running?

于 2011-08-16T18:55:19.363 回答