首页 > 其他分享 >Jstack排查线上CPU100%

Jstack排查线上CPU100%

时间:2022-10-02 21:56:15浏览次数:80  
标签:Thread jstack CPU100% Jstack 排查 线程 堆栈 超时 id

Jstack排查线上CPU100%

介绍

jstack是JVM自带的Java堆栈跟踪工具,用于生成java虚拟机当前时刻的线程快照,来帮助定位线程出现长时间停顿的原因,例如死锁、死循环等。

语法

jstack [options] pid

options:

  1. -F:to force a thread dump. Use when jstack does not respond (process is hung),当一个进程挂起时,jstack 命令没有响应时,强制输出这个线程转储信息。
  2. -m:to print both java and native frames (mixed mode),打印JAVA和包含本地方法的C/C++的堆栈信息。
  3. -l:long listing. Prints additional information about locks,打印堆栈信息,包含锁的其他信息,例如死锁等。

实操

  1. 找出cpu使用率最高的进程

    top -c
    
  2. 找出CPU使用率最高的进程,查询该pid进程下的线程使用情况

    ps -mp 进程id -o THREAD,tid,time
    
  3. 将线程id转换成16进制

    printf "%x\n" tid
    
  4. jstack查看相应线程的堆栈

    jstack 进程id | grep 16进制线程id -A 30
    # 或者打印到文件
    jstack pid | grep tid >> jstack.txt
    

扩展

JVM线程的几种状态

New

新建的线程,线程还没启动。

Runnable

线程正在运行或者等待操作系统中的其他资源,例如线程运行过程中,系统分配资源给其他操作,此时这个线程还是Runnable状态,可以理解为可运行的线程。

Blocked

阻塞状态,阻塞状态的线程正在等待监视器锁,在Dump日志中一般显示为java.lang.Thread.State: BLOCKED

Waiting

等待线程,线程正在无限期的等待另一个线程执行某些特别操作。一般线程由于调用一下方法会处于等待状态。

Object.wait // 不带超时
Thread.join // 不带超时
LockSupport.park
Time_Waiting

和Waiting类似,但是线程等待有时间限制,设定了指定等待时间。一般线程由于调用一下方法会处于超时等待状态。

Thread.sleep
Object.wait // 指定超时时间
Thread.join // 指定超时时间
LockSupport.parkNanos
LockSupport.parkUntil
Terminated

终止状态。

原文链接:https://monkey.blog.xpyvip.top/archives/jstack-pai-cha-xian-shang-cpu

标签:Thread,jstack,CPU100%,Jstack,排查,线程,堆栈,超时,id
From: https://www.cnblogs.com/aibianchengya/p/16749559.html

相关文章

  • 【Atlas】记录一次平台访问Post数据到阿里云概率性 失败的问题排查
    背景2周前,对阿里云上的web服务增加了HTTPS的支持,原因是Google对于安全的验证需求导致请求经常挂掉,页面无数据或者整个页面被白屏的问题;然后做好变更后,开发人员就离......
  • 设备接入EasyGBS平台主动发送BYE消息的原因排查与分析
    EasyGBS国标视频云服务是基于国标GB28181协议的视频平台,支持设备/平台通过国标GB28181协议注册接入,可实现的视频功能包括视频直播、录像、语音对讲、云存储、告警、级联等。......
  • 使用windbg查看dump和排查问题
    使用windbg查看dump和排查问题1、安装与配置windbg的symbol(符号)1)下载WinDBGhttps://dl.pconline.com.cn/download/770876.html2)双击下载的文件安装windbg......
  • 磁盘IO情况排查工具
    iostat命令查询当前磁盘的IO状态每隔一秒刷新一次一共显示10次:iostat-d-k110参数详解rrqm/s:每秒进行merge的读操作数目.即delta(rmerge)/swrqm/s:每秒......
  • JVM内存溢出问题排查
    内存溢出outofmemory:通俗理解就是内存不够用了,是我们工作当中经常会遇到的问题,内存溢出有可能发生在正常的情况下,而非代码层面问题导致,比如高并发下,大量的请求占用内......
  • 数据库问题排查
    数据库若干查询语句记录 ##连接某个数据库mysql-hdbip-uusername-ppassword##进入某个数据库usehenry;##显示若干表showtables;##查询锁的......
  • java进程导致CPU100%分析
    背景最近负责的一个项目上线,运行一段时间后发现对应的进程竟然占用了100%的CPU,导致公司的物理服务器都不堪重负,频繁宕机。那么,针对这类java进程CPU飙升的问题,我们一般要......
  • 记一次接口超时排查
    先是客户端因为请求响应超时超时,主动断开了连接 这是查看nginx访问日志,对应的记录http状态码为499 总结:当客户端主动把连接断开时,HTTP不为这种情形定义代码。同......
  • excel导出大数据量时服务器cpu过高tomcat卡死问题排查
      最近发现一套线上生产系统每周一都会出现宕机的现象,CPU很高,持续几分钟后tomcat直接卡死,系统无法登陆刷新无反应,重启后又回复正常,各种定位各种检查。最开始想到的是不是......
  • .netcore发布后错误排查
    1、.dll不能运行,iis没有显示错误,可能是发布后是生产环境,该为开发环境,修改web.config<aspNetCoreprocessPath="dotnet"arguments=".\CoreCms.Wrl.Web.dll"stdoutLogEna......