`
marb
  • 浏览: 419885 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

 
阅读更多

1. 背景

有时,线上集群load会突然飙升,无法响应正常请求。

那么引起load飙升的线程究竟在做什么?哪些线程霸占了CPU?可以通过top和jstack命令进行定位。

 

2. 定位步骤

1. 使用终端1进入目标机器,执行top命令,默认是进程视图,其中PID是进程号,截图如下:


 

在这里,我们只能看到java进程占用CPU达到115%,那么究竟是那些线程非常耗CPU呢?

2. 由于我们要看到线程,在终端1,按下“H”键或者“shift+h”,top视图会切换到线程视图,其中PID是线程号,截图如下:


 

可以发现红框内的线程的CPU使用率非常高,占用CPU时间达到1秒左右,显然不正常,但是这些线程在做什么?

3. 

  1. 打开终端2,使用jstack命令输出这一时刻的线程栈,保存到文件,命名为jstack.log。注意:输出线程栈和保存top命令快照尽量同时进行。
  2. 4. 由于jstack.log文件记录的线程ID是16进制,需要将top命令展示的线程号转换为16进制,以15100为例,在linux下输入命令:printf 0x%x 15100,得到15100的十六进制为0x3afc
  3. 5. 在jstack.log中搜索0x3afc关键字,可以清晰看到该线程在做刷新地址列表,如下图:
  4.  

3. 总结

以前碰到集群load飙升时,有时会束手无策,不知从何查起。以后再发生类似问题时,可以使用这个方法,看下究竟是那些线程在长时间占用CPU,尽快定位问题和解决问题。

分享到:
评论

相关推荐

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

    ### 通过 top 和 jstack 确定哪些线程耗尽了 CPU #### 背景 在实际生产环境中,可能会遇到服务器负载突然上升、CPU使用率达到100%的情况,进而导致服务无法正常响应请求甚至出现宕机现象。这时,我们需要能够快速...

    Java线程Dump分析工具jstack解析及使用场景

    它可以显示出每个线程的堆栈跟踪,揭示出哪些线程正忙于执行任务,哪些线程被阻塞等待资源,以及等待的具体条件是什么。 在dump文件中,以下几个线程状态尤其值得关注: 1. **死锁(Deadlock)**:当两个或多个...

    输出java进程的jstack信息示例分享 通过线程堆栈信息分析java线程

    总之,jstack是一个非常强大的工具,通过它可以有效诊断和解决Java程序中的线程相关问题,例如线程阻塞或死锁。熟练掌握jstack的使用对于任何Java应用程序的性能优化和问题解决都有着重要作用。

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

    本文将详细介绍使用 jstack 工具定位分析 CPU 消耗问题的步骤和方法。 问题现象描述 在本例中,个人银行用户开户调用短信验证接口时,当大于 20 用户并发时,usercenter 服务的 CPU 使用率超过 100%。这表明存在...

    如何通过jstack命令dump线程信息

    这种情况下,`jstack`的输出会包含一个死锁检测段,指出哪些线程在哪个类的哪一行代码上发生了死锁。 在示例代码中,`DeadLockDemo`类的`deadLock()`方法创建了两个线程`t1`和`t2`。线程`t1`先获取锁A,然后尝试...

    JVM---jstack分析Java线程CPU占用,线程死锁的解决

    3. **获取线程信息**:通过`jstack`命令将线程信息输出到文件,例如`jstack 进程ID > cpu.txt`。 4. **分析线程状态**:使用文本编辑器或专用工具(如Windows下的ProcessExplorer)查看生成的`cpu.txt`文件,找到CPU...

    图形界面分析threadump_jstack分析工具_包含jdk

    通过图形界面,开发者可以更直观地查看和理解`jstack`输出的线程堆栈信息,进一步定位和解决程序中的线程问题。同时,由于包含JCA支持,对于涉及JCA的连接管理和事务问题也能提供辅助分析。使用这个工具,开发者可以...

    MPP的jstack分析结果

    这有助于我们识别哪些线程可能在消耗过多资源或导致阻塞。 2. **堆栈轨迹**:每个线程的状态下都会附带其调用堆栈,展示出线程执行的具体代码路径。这能帮助我们定位问题代码,比如查找死锁的源头或者耗时操作。 3...

    用jstack分析CPU占用率高的原因.zip

    用jstack分析CPU占用率高的原因 1 top -H -p pid 2 linux printf命令将10进制转换为16进制 3在jstack中找到相应的堆栈信息jstack pid grep 'nid' -C5 –color

    jstack生成的Thread Dump日志.docx

    - 对于网络瓶颈,通过`netstat`监控网络流量,分析CPU使用情况,确认网络带宽是否限制了线程执行。 - 使用`jstack`配合`jconsole`、`VisualVM`等工具定期收集Thread Dump,分析趋势,找出异常行为。 - 优化同步...

    jstack和线程dump实例解析

    当线程出现停顿时,可以通过jstack查看各个线程的调用堆栈,这有助于开发者了解线程的运行状态以及它们正在等待什么资源。例如,命令`jstack 5516`产生的输出中,有线程处于RUNNABLE状态,有线程处于BLOCKED状态。...

    JStack和Java Thread Dumps分析

    ### JStack和Java Thread Dumps分析 #### 一、引言 在Java应用程序开发与维护过程中,时常会遇到性能瓶颈或死锁等问题。这些问题往往难以定位,尤其当系统处于高负载下时,更是如此。此时,`JStack`工具便显得尤为...

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

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

    抓取jstack方法及解决system用户执行jstack命令权限问题

    抓取jstack方法及解决system用户执行jstack命令权限问题, 打开cmd窗口,输入命令 jstack -l 49824>>C:/error01.txt 其中49824为tomcat8.0 的pid ; error01.txt 这个可以自己取名字 多输出几份jstack 文件,做比对...

    CPU 高消耗排查

    通过对`top`命令的应用,我们可以快速找到CPU消耗高的进程及线程,并结合`jstack`等工具进行进一步的诊断和优化。这些方法不仅适用于日常运维工作中对系统性能问题的排查,也是开发人员在调试高性能系统时不可或缺的...

    检测CPU、内存、网速、线程的工具

    通过监控CPU、内存、网络速度和线程,我们可以及时发现性能瓶颈,优化代码,提高系统的响应速度和用户体验。无论是对于日常使用还是专业的系统管理员,掌握这些工具的使用技巧都是提升工作效率的关键。

    jstack-jboss-7.5.0-Final.zip

    `logging.properties`是Java的日志配置文件,它定义了应用程序如何处理日志信息,而`8508.jstack2.log`是通过`jstack`工具生成的线程堆栈跟踪文件,用于诊断Java应用的线程状态,特别是查找可能存在的死锁问题。...

    CPU热点定位

    本文将通过一个具体的案例来探讨如何使用`jstack`和`top`工具进行CPU热点定位。 #### 二、基本概念 1. **CPU热点**:指的是程序执行过程中占用CPU时间最长的代码段。 2. **jstack**:Java虚拟机提供的一种工具,...

    Java线程检测和数据收集工具

    本文将深入探讨如何使用Java提供的工具——`jps`和`jstack`,以及如何通过Shell脚本来定时收集Java进程的线程信息。 首先,`jps`(JVM Process Status)是Java虚拟机进程状况工具,它能够列出正在运行的Java进程ID...

    58速运:线上服务CPU100%问题快速定位实战1

    本篇文章讲解了如何快速定位线上服务CPU100%的问题,通过实战演练,展示了使用top、pstack/jstack等工具来定位问题的步骤。 知识点1:_top命令_ top命令是Linux系统中一个常用的性能监控工具,用于实时显示系统...

Global site tag (gtag.js) - Google Analytics