Java Visual VM 倾斜 CPU

Posted

技术标签:

【中文标题】Java Visual VM 倾斜 CPU【英文标题】:Java Visual VM skewing CPU 【发布时间】:2011-04-01 19:12:46 【问题描述】:

我正在尝试分析在 Windows 上运行的 Java UI 应用程序的 CPU 使用率。我将它连接到 VisualVM,但看起来 CPU 使用率的最高百分比正在被

sum.rmi.transport.tcp.TCPTransport$ConnectionHandler.run();

我相信这是用来向 VisualVM 提供信息的,因此 VisualVM 会扭曲我正在尝试调查的结果。有没有人有办法更好地指示正在发生的事情,或者有更好的方法来确定正在运行的 java 应用程序中什么占用了这么多 CPU。

【问题讨论】:

Here's a way 了解程序在做什么。基本上,将软件视为时钟。第二种方法被分钟方法、小时方法、日方法调用。如果您只是对其进行快照,您可以通过检查所有级别来了解它在做什么。连续做几次,你就会知道它花时间在什么地方。 通过快照我假设你的意思是堆栈跟踪。你怎么知道哪些线程正在运行?与哪些线程阻塞相比?与哪些线程正在等待调度? 把它们都抓起来,研究每一个。你可以很容易地分辨出每个人在做什么。大多数你可以很容易地忽略。你可以通过它在做什么来判断你关心哪个,无论它是在嘎吱作响,还是在等待一些 IO,或者在睡觉,等等。不需要有根据的猜测。 【参考方案1】:

先尝试使用采样器。 有关详细信息,请使用分析器和设置根方法。有关 CPU 和内存分析的更多信息,请参阅 Profiling With VisualVM, Part 1 和 Profiling With VisualVM, Part 2。

【讨论】:

【参考方案2】:

这听起来非常可疑。尝试使用来自hprof 的结果交叉引用数据。您不需要运行任何外部应用程序,数据将简单地从您自己的进程转储到文本文件中。您是否远程连接到您的进程?

【讨论】:

VisualVM 和我的应用都在同一台机器上运行。

以上是关于Java Visual VM 倾斜 CPU的主要内容,如果未能解决你的问题,请参考以下文章

数据倾斜导致子任务积压

Java生成-zipf分布的数据集(自定义倾斜度,用作spark data skew测试)

Spark数据倾斜解决方案

精通Java事务编程-弱隔离级别之写倾斜与幻读

DataSkew —— 数据倾斜问题解析及解决方案实践总结小记

仅倾斜/倾斜 div 的底部 [重复]