zoukankan      html  css  js  c++  java
  • 线上问题定位---jstack

    1、通过top 拿到占用cpu比较高的几个进程的pid ,如A
    2、top -Hp A:找出占用cpu过高的线程,记录下PID 如1,2,转换成十六进制。printf "%x " 21742,如b
    3、jstack -l A>test.txt  在test.txt文档中找b相关的信息就行分析

    • 死锁,Deadlock(重点关注)
    • 执行中,Runnable
    • 等待资源,Waiting on condition(重点关注)
    • 等待获取监视器,Waiting on monitor entry(重点关注)
    • 对象等待中,Object.wait() 或 TIMED_WAITING
    • 暂停,Suspended
    • 阻塞,Blocked(重点关注)
    • 停止,Parked

    Runnable

    线程正在运行中。一般指该线程正在执行状态中,该线程占用了资源,正在处理某个请求,有可能正在传递SQL到数据库执行,有可能在对某个文件操作,有可能进行数据类型等转换。

    Deadlock

    同一个地址被不同线程占用。

    Wait on condition

    等待资源,或等待某个条件的发生。具体原因需结合 stacktrace来分析。

      • 常见情况是该线程在 sleep,等待 sleep的时间到了时候,将被唤醒。关键字:TIMED_WAITING,sleeping,parking。TIMED_WAITING可能是调用了有超时参数的wait所引起的。parking指线程处于挂起中。
        下面是一个典型的sleep引起的Wait on condition

    Blocked

    线程阻塞,是指当前线程执行过程中,所需要的资源长时间等待却一直未能获取到,被容器的线程管理器标识为阻塞状态,可以理解为等待资源超时的线程。
    如果线程处于Blocked状态,但是原因不清楚。可以使用jstack -m pid得到线程的mixed信息。

    参考:https://blog.csdn.net/bluetjs/article/details/78040571

  • 相关阅读:
    创建Hive/hbase相关联的表异常
    CDH5.2+CM5.2+impala2+Spark1.1 集群搭建基础环境准备
    【JavaWeb】(10)微信公众号开发进阶
    Ambari-stack介绍
    OSGi中的ServletContext
    笔试面试1 用C实现C库函数itoa, atoi
    SGU 114. Telecasting station 三分or找中位数
    face++实现人脸识别
    磁盘接口与磁盘扫描
    CSDN开源夏令营 百度数据可视化实践 ECharts(4)
  • 原文地址:https://www.cnblogs.com/xuxinstyle/p/13517309.html
Copyright © 2011-2022 走看看