我们使用jdk自带的jstack来分析。当linux出现cpu被java程序消耗过高时,以下过程说不定可以帮上你的忙:
1.top查找出哪个进程消耗的cpu高
21125 co_ad2 18 0 1817m 776m 9712 S 3.3 4.9 12:03.24 java
5284 co_ad 21 0 3028m 2.5g 9432 S 1.0 16.3 6629:44 java
21994 mysql 15 0 449m 88m 5072 S 1.0 0.6 67582:38 mysqld
8657 co_sparr 19 0 2678m 892m 9220 S 0.3 5.7 103:06.13 java
这里我们分析21125这个java进程。
2.top中shift+h查找出哪个线程消耗的cpu高
先输入top -p 21125,然后再按shift+h。这里意思为只查看21125的进程,并且显示线程。
21233 co_ad2 15 0 1807m 630m 9492 S 1.3 4.0 0:05.12 java
20503 co_ad2_s 15 0 1360m 560m 9176 S 0.3 3.6 0:46.72 java
21134 co_ad2 15 0 1807m 630m 9492 S 0.3 4.0 0:00.72 java
22673 co_ad2 15 0 1807m 630m 9492 S 0.3 4.0 0:03.12 java
这里我们分析21233这个线程,并且注意的是,这个线程是属于21125这个进程的。
3.jstack查找这个线程的信息
jstack [进程]|grep -A 10 [线程的16进制]
即:
- jstack 21125|grep -A 10 52f1
-A 10表示查找到所在行的后10行。21233用计算器转换为16进制52f1,注意字母是小写。
结果:
- "http-8081-11" daemon prio=10 tid=0x00002aab049a1800 nid=0x52f1 in Object.wait() [0x0000000042c75000]
- java.lang.Thread.State: WAITING (on object monitor)
- at java.lang.Object.wait(Native Method)
- at java.lang.Object.wait(Object.java:485)
- at org.apache.tomcat.util.net.JIoEndpoint$Worker.await(JIoEndpoint.java:416)
转自:http://flysnowxf.iteye.com/blog/1162691
相关推荐
使用 jstack 定位分析 CPU 消耗问题 在实际生产环境中,CPU 占用率过高的问题经常会出现,特别是在高并发情况下。使用 jstack 工具可以帮助我们快速定位 CPU 消耗问题的根源。本文将详细介绍使用 jstack 工具定位...
当系统出现响应慢、资源占用过高或者任务执行异常等情况时,jstack可以提供宝贵的线索。 通过执行jstack命令,我们可以获取到以下关键信息: 1. **线程状态**:jstack会列出所有活动线程及其当前的状态,包括运行...
这篇原创博客“【原创】java程序cpu占用过高问题分析”探讨了如何识别和解决这些问题。 首先,分析CPU占用过高的第一步是获取性能数据。这通常通过Java的JMX(Java Management Extensions)或者监控工具如VisualVM...
### CPU高消耗排查知识点 #### 一、CPU高消耗概览 CPU高消耗是指系统或应用程序在运行过程中占用...通过不断的实践和学习,我们可以更加高效地解决实际工作中遇到的各种CPU消耗问题,从而提升系统的稳定性和性能表现。
通过使用`top`和`jstack`这两个工具,我们可以有效地定位到造成CPU资源过度消耗的线程,进而深入分析问题的根本原因。在实际操作过程中,还需要结合具体的应用场景和业务逻辑来综合判断问题所在,从而采取有效的优化...
1. **CPU消耗过高**: 当Java进程CPU占用率过高时,可能的原因包括无限循环、线程阻塞、计算密集型任务或垃圾回收问题等。`44974.stack`文件很可能包含了Java线程堆栈跟踪,通过分析这个文件,我们可以看到各个线程...
在Java开发过程中,有时会遇到项目运行时CPU占用率达到100%的问题,这可能是由于某个线程...通过深入理解这些工具和方法,你可以有效地预防和解决Java项目运行时CPU使用率过高的问题,从而确保应用程序的稳定性和效率。
10. **服务器配置问题**:操作系统级别的问题,如打开文件描述符限制过低,或者CPU调度策略不当,也可能导致Tomcat CPU使用率过高。 为了诊断和解决问题,可以采取以下步骤: 1. **监控工具**:使用像`top`、`...
在IT运维和开发过程中,经常会遇到系统宕机、CPU使用率过高、SQL执行缓慢等常见问题。这些问题如果不及时解决,可能会严重影响系统的稳定性和用户体验。本文档介绍了一套专门针对这些常见问题的辅助工具——宕机、高...
这些工具对于 Java 程序员来说是必备的,能够帮助我们解决各种 JVM 性能问题,如 OutOfMemoryError、内存不足、线程死锁、锁争用、高 CPU 消耗等问题。 一、jps(Java Virtual Machine Process Status Tool) jps ...
通过对以上步骤的分析,我们通常能够定位到导致CPU占用过高的原因,并采取相应的优化措施,如调整并发控制、优化算法、减少不必要的计算或I/O操作等。在实际应用中,还可以结合Java Profiler工具(如VisualVM、...
### CPU热点定位技术详解 #### 一、引言 在软件开发过程中,性能问题是常见的挑战...综上所述,通过使用`jstack`和`top`工具结合的方式,我们可以有效地定位并解决Java应用中的CPU热点问题,从而提高应用的整体性能。
2. **确定问题根源**:通过上述分析,我们可能能够确定导致CPU占用过高的具体原因。 - 比如,某个循环或递归操作没有正确的退出条件,或者某些线程因等待资源而陷入死锁状态。 #### 四、解决问题 1. **优化代码**...
优化算法和数据结构可以减少CPU消耗。例如,避免在循环中进行不必要的对象创建,使用StringBuilder代替String连接,以及利用并发容器(如ConcurrentHashMap)来减少锁的使用。 **监控与诊断** 使用Java自带的JMX...
Java堆栈分析是Java应用程序性能调优的重要环节,特别是在服务器环境中,当CPU资源占用过高或者出现内存泄露等问题时,分析Java堆栈能够帮助我们找出问题的根源。在本例中,我们将通过一系列步骤来理解如何进行Java...
标题 "Tomcat CPU 高" 描述了在运行Apache Tomcat服务器时遇到的一个常见问题,即CPU使用率过高。这通常意味着服务器正在处理大量请求,或者存在资源浪费、内存泄漏、线程阻塞等问题,导致性能瓶颈。让我们深入探讨...
- 使用`top`命令找出消耗CPU最多的进程,然后通过`jstack`获取线程栈信息,查找导致CPU过高的原因。 2. 内存溢出: - 堆溢出:当LR报错并出现`Java heap space`异常时,可以使用`jmap -histo pid`检查堆内存使用...
在Linux系统管理中,CPU占用率过高是一个常见的问题,它可能导致系统性能下降,甚至影响到服务的稳定性。本文主要探讨了如何排查和解决Linux系统中CPU利用率高的问题,包括两种常用的方法以及一个实际的故障排查案例...
- 使用`top`命令结合`jstack`、`jmap`等工具深入分析内存消耗较大的进程和线程。 3. **并发问题** - **原因分析**:在高并发环境下,线程过多会导致内存压力增大。 - **解决策略**: - 限制线程池的最大线程数...