`

使用jstack分析cpu消耗过高的问题

阅读更多

我们使用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进制] 
即: 

Java代码  收藏代码
  1. jstack 21125|grep -A 10 52f1  


-A 10表示查找到所在行的后10行。21233用计算器转换为16进制52f1,注意字母是小写。 
结果: 

Java代码  收藏代码
  1. "http-8081-11" daemon prio=10 tid=0x00002aab049a1800 nid=0x52f1 in Object.wait() [0x0000000042c75000]  
  2.    java.lang.Thread.State: WAITING (on object monitor)  
  3.      at java.lang.Object.wait(Native Method)  
  4.      at java.lang.Object.wait(Object.java:485)  
  5.      at org.apache.tomcat.util.net.JIoEndpoint$Worker.await(JIoEndpoint.java:416)  

转自:http://flysnowxf.iteye.com/blog/1162691

分享到:
评论

相关推荐

    使用jstack定位分析CPU消耗问题.docx

    使用 jstack 定位分析 CPU 消耗问题 在实际生产环境中,CPU 占用率过高的问题经常会出现,特别是在高并发情况下。使用 jstack 工具可以帮助我们快速定位 CPU 消耗问题的根源。本文将详细介绍使用 jstack 工具定位...

    MPP的jstack分析结果

    当系统出现响应慢、资源占用过高或者任务执行异常等情况时,jstack可以提供宝贵的线索。 通过执行jstack命令,我们可以获取到以下关键信息: 1. **线程状态**:jstack会列出所有活动线程及其当前的状态,包括运行...

    【原创】java程序cpu占用过高问题分析

    这篇原创博客“【原创】java程序cpu占用过高问题分析”探讨了如何识别和解决这些问题。 首先,分析CPU占用过高的第一步是获取性能数据。这通常通过Java的JMX(Java Management Extensions)或者监控工具如VisualVM...

    CPU 高消耗排查

    ### CPU高消耗排查知识点 #### 一、CPU高消耗概览 CPU高消耗是指系统或应用程序在运行过程中占用...通过不断的实践和学习,我们可以更加高效地解决实际工作中遇到的各种CPU消耗问题,从而提升系统的稳定性和性能表现。

    通过 top 和 jstack 确定哪些线程耗尽了 CPU.docx

    通过使用`top`和`jstack`这两个工具,我们可以有效地定位到造成CPU资源过度消耗的线程,进而深入分析问题的根本原因。在实际操作过程中,还需要结合具体的应用场景和业务逻辑来综合判断问题所在,从而采取有效的优化...

    java进程占用CPU和内存太高问题排查相关测试文件.zip

    1. **CPU消耗过高**: 当Java进程CPU占用率过高时,可能的原因包括无限循环、线程阻塞、计算密集型任务或垃圾回收问题等。`44974.stack`文件很可能包含了Java线程堆栈跟踪,通过分析这个文件,我们可以看到各个线程...

    教你找出 运行java项目,使cpu 100%,如何排查出是哪个jar包的哪个线程导致的

    在Java开发过程中,有时会遇到项目运行时CPU占用率达到100%的问题,这可能是由于某个线程...通过深入理解这些工具和方法,你可以有效地预防和解决Java项目运行时CPU使用率过高的问题,从而确保应用程序的稳定性和效率。

    分析tomcat占用cpu高的原因

    10. **服务器配置问题**:操作系统级别的问题,如打开文件描述符限制过低,或者CPU调度策略不当,也可能导致Tomcat CPU使用率过高。 为了诊断和解决问题,可以采取以下步骤: 1. **监控工具**:使用像`top`、`...

    宕机、高cpu、慢sql等问题辅助工具v0.1.pdf

    在IT运维和开发过程中,经常会遇到系统宕机、CPU使用率过高、SQL执行缓慢等常见问题。这些问题如果不及时解决,可能会严重影响系统的稳定性和用户体验。本文档介绍了一套专门针对这些常见问题的辅助工具——宕机、高...

    JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解.docx

    这些工具对于 Java 程序员来说是必备的,能够帮助我们解决各种 JVM 性能问题,如 OutOfMemoryError、内存不足、线程死锁、锁争用、高 CPU 消耗等问题。 一、jps(Java Virtual Machine Process Status Tool) jps ...

    70-Java程序CPU占用1001

    通过对以上步骤的分析,我们通常能够定位到导致CPU占用过高的原因,并采取相应的优化措施,如调整并发控制、优化算法、减少不必要的计算或I/O操作等。在实际应用中,还可以结合Java Profiler工具(如VisualVM、...

    CPU热点定位

    ### CPU热点定位技术详解 #### 一、引言 在软件开发过程中,性能问题是常见的挑战...综上所述,通过使用`jstack`和`top`工具结合的方式,我们可以有效地定位并解决Java应用中的CPU热点问题,从而提高应用的整体性能。

    JAVA分析进程占用过大原因

    2. **确定问题根源**:通过上述分析,我们可能能够确定导致CPU占用过高的具体原因。 - 比如,某个循环或递归操作没有正确的退出条件,或者某些线程因等待资源而陷入死锁状态。 #### 四、解决问题 1. **优化代码**...

    Java进程cpu占用率高

    优化算法和数据结构可以减少CPU消耗。例如,避免在循环中进行不必要的对象创建,使用StringBuilder代替String连接,以及利用并发容器(如ConcurrentHashMap)来减少锁的使用。 **监控与诊断** 使用Java自带的JMX...

    Java堆栈分析服务器

    Java堆栈分析是Java应用程序性能调优的重要环节,特别是在服务器环境中,当CPU资源占用过高或者出现内存泄露等问题时,分析Java堆栈能够帮助我们找出问题的根源。在本例中,我们将通过一系列步骤来理解如何进行Java...

    tomcat cpu high

    标题 "Tomcat CPU 高" 描述了在运行Apache Tomcat服务器时遇到的一个常见问题,即CPU使用率过高。这通常意味着服务器正在处理大量请求,或者存在资源浪费、内存泄漏、线程阻塞等问题,导致性能瓶颈。让我们深入探讨...

    性能测试常见的问题及解决方案

    - 使用`top`命令找出消耗CPU最多的进程,然后通过`jstack`获取线程栈信息,查找导致CPU过高的原因。 2. 内存溢出: - 堆溢出:当LR报错并出现`Java heap space`异常时,可以使用`jmap -histo pid`检查堆内存使用...

    Linux系统中CPU占用率较高问题排查思路与解决方法

    在Linux系统管理中,CPU占用率过高是一个常见的问题,它可能导致系统性能下降,甚至影响到服务的稳定性。本文主要探讨了如何排查和解决Linux系统中CPU利用率高的问题,包括两种常用的方法以及一个实际的故障排查案例...

    内存IO磁盘网络问题分析

    - 使用`top`命令结合`jstack`、`jmap`等工具深入分析内存消耗较大的进程和线程。 3. **并发问题** - **原因分析**:在高并发环境下,线程过多会导致内存压力增大。 - **解决策略**: - 限制线程池的最大线程数...

Global site tag (gtag.js) - Google Analytics