1、通过top命令发现 cpu高的进程
根据top命令,发现PID 为22143的Java进程占用CPU 17.8%
2、根据cpu高的进程,查找引起cpu高的线程
命令:ps -mp 22143 -o THREAD,tid,time|sort -k1 -nr|head -15
方案二:
top -H -p pid
这样是是看pid对应下的线程对应的的cpu 占用率,可以定位到cpu高的线程
(这个图是后补的)
3、收集进程的堆栈信息上下文
jstack -F pid >data.txt 即可把线程的堆栈信息统计到 文件中
注意:jstack -F 这个 -F参数,最好不加,因为加上-F打印的线程挂起的栈信息
4、根据线程id定位代码
查找22328 线程对应的线程:
注意:不是每次jstack 都能拿到cpu 高的线程,我试验的时候,不是每次都能的。
如果没有加 -F 参数,输出的如下:
可以通过
echo "ibase=10;obase=16;22328"|bc
输出:0x5738
"main" prio=10 tid=0x00007f52fc008800 nid=0x5738 waiting for monitor entry [0x00007f53032b1000]
java.lang.Thread.State: BLOCKED (on object monitor)
at Test.main(Test.java:26)
- waiting to lock <0x00000000eb64c2d8> (a java.util.HashMap)
参考:http://www.blogjava.net/hankchen/archive/2012/05/09/377735.html
(1)load average:此值反映了任务队列的平均长度;如果此值超过了CPU数量,则表示当前CPU数量不足以处理任务,负载过高
(2)%us:用户CPU时间百分比;如果此值过高,可能是代码中存在死循环、或是频繁GC等
(3)%sy:系统CPU时间百分比;如果此值过高,可能是系统线程竞争激烈,上下文切换过多,应当减少线程数
(4)%wa:等待输入、输出CPU时间百分比;如果此值过高,说明系统IO速度过慢,CPU大部分时间都在等待IO完成
(5)%hi:硬件中断CPU百分比;当硬件中断发生时,CPU会优先去处理硬件中断;比如,网卡接收数据会产生硬件中断
(6)swap used:被使用的swap;此值过高代表系统因为内存不足在进行频繁的换入、换出操作,这样会影响效率,应增大内存量
(7)%CPU:进程使用CPU的百分比;此值高表示CPU在进行无阻塞运算等
- 大小: 26 KB
- 大小: 13.2 KB
- 大小: 7.3 KB
- 大小: 18 KB
- 大小: 12.2 KB
- 大小: 23.6 KB
分享到:
相关推荐
总之,`show-busy-java-threads.sh` 是一个非常实用的工具,对于排查JVM高CPU使用率的问题非常有帮助。开发者可以通过这个脚本,结合日志和代码分析,快速定位并解决问题,提高Java应用的性能和稳定性。在日常开发和...
在《实战Java虚拟机——JVM故障诊断与性能优化》一书中,作者深入探讨了如何对JVM进行故障排查和性能调优,通过源码分析来帮助读者理解其内部工作原理。下面我们将根据书中的主题,详细阐述相关的知识点。 1. **JVM...
《深入探索Java虚拟机:以gp-jvm-visualvm为例》 Java虚拟机(JVM)是Java程序运行的核心,它负责解析字节码、管理内存、执行线程以及优化代码。当我们谈论“gp-jvm-visualvm”时,我们是在讨论一个用于深入理解和...
在Java应用程序的运行过程中,有时候会遇到CPU使用率异常升高的情况,这可能是由于线程的不恰当使用或者死锁等问题导致的。`show-busy-java-threads.sh`脚本就是为了帮助开发者快速定位和排查这类性能问题而设计的。...
Java虚拟机(JVM)是Java编程语言的核心组成部分,它为Java程序提供了运行环境。在“Chapter 05 The Java ...对JVM的理解不仅有助于编写高效、稳定的代码,也能帮助我们排查和解决性能问题,提升整体的开发技能。
SkyWalking Java Agent能够监控JVM的内存使用情况、线程状态、垃圾回收(GC)行为,以及CPU负载等关键指标,帮助开发者识别潜在的性能问题。 3. **分布式追踪**:SkyWalking提供强大的分布式追踪能力,允许开发者...
在日常的软件开发与维护过程中,针对JVM(Java虚拟机)的性能调优和问题排查是非常关键的一环。本手册旨在提供一套全面且实用的JVM问题排查方法和技术,帮助开发者快速定位并解决JVM相关的性能瓶颈或异常情况。 ###...
4. **JFR(Java Flight Recorder)**:Oracle JDK提供的高精度事件记录工具,可用于性能分析和故障排查。 5. **JIT编译器统计**:-XX:+PrintCompilation可以输出JIT编译的相关信息,分析代码热点。 五、性能优化...
Java虚拟机(JVM)是Java程序运行的核心组件,它为Java代码提供了跨平台的运行环境。在Java面试中,JVM的相关知识是面试官常常考察的重要领域,因为理解和掌握JVM的工作原理对于优化程序性能至关重要。以下是对JVM...
这些工具能提供实时性能数据,帮助我们诊断内存泄漏、CPU过高、GC问题等。 总结来说,"Jvm优化的Java - Demo"项目涵盖了以下几个关键知识点: 1. JVM参数设置:包括内存分配、GC策略等。 2. 日志打印:通过特定...
- **定义**:JVM(Java Virtual Machine)即Java虚拟机,是一种抽象的计算机,它提供了一个运行环境,使Java代码可以在任何安装了JVM的操作系统上运行,而无需重新编译。 - **作用**:通过字节码执行机制,实现了...
通过阅读《实战Java虚拟机——JVM故障诊断与性能优化》,读者可以系统地学习JVM相关知识,提升故障排查和性能调优的能力。配合提供的源码和在线资源,读者可以在实践中加深理解和应用,使自己的Java开发技能更上一层...
在Java开发领域,JVM(Java Virtual Machine)是至关重要的组成部分,它负责解析并执行Java程序。JVM调优是一项核心技能,可以帮助我们优化应用程序的性能,减少内存消耗,提高响应速度,以及避免可能出现的垃圾收集...
Java基础是每一个Java开发者必须掌握的核心知识,而JVM(Java虚拟机)作为Java程序运行的平台,它的理解和使用对于优化程序性能、排查问题至关重要。本篇内容将深入探讨Java基础中的JVM初步使用,帮助你更好地理解...
8. **性能监控工具**:如JVisualVM、JConsole、JFR(Java Flight Recorder)和JMC(Java Mission Control)等,它们能帮助我们观察JVM的运行状态,分析CPU、内存和GC行为。 9. **JVM参数设置**:通过命令行参数如`-...
Java虚拟机(JVM)是Java程序运行的基础,它负责解析和执行字节码,为开发者提供了跨平台的运行环境。JVM原理和调优是每个Java开发人员必须掌握的关键技能,这涉及到内存管理、垃圾收集、性能优化等多个方面。在深入...
- 线程分析:排查死锁、线程阻塞等问题,确保并发性能。 - 性能瓶颈定位:通过CPU剖析、方法耗时统计等方式定位性能瓶颈。 6. **JVM未来发展** - AOT编译:随着GraalVM的发展,JVM开始支持AOT(Ahead-Of-Time)...
在Java应用程序的运行过程中,有时会遇到进程占用CPU和内存过高导致系统性能下降的问题。针对这类问题,开发者需要进行深入的排查与优化。本压缩包文件包含了一些关键工具和输出,帮助我们理解如何进行这样的排查。 ...
《实战JAVA虚拟机 JVM故障诊断与性能优化》是一本深度探讨Java虚拟机(JVM)的专著,旨在帮助开发者解决实际工作中遇到的JVM相关问题,提升系统的性能表现。通过对JVM内部机制的深入理解,我们可以更有效地调试、...