Java进程排查CPU飙升方法

1. top查看CPU占用情况

# 使用top指令
top

注:

  • shft+p按照cpu占用进行排序,按shift+m按照内存占用进行排序

如图:
在这里插入图片描述

2. 定位该进程的线程信息

top -Hp PID
如:
top -Hp 10255

解析:

  • top:是一个实时的系统监视工具,用于显示系统中各个进程的资源占用情况。
  • -H:是 top 命令的选项之一,用于显示线程信息。
  • -p 10255:是 top 命令的另一个选项,用于指定要监视的进程的 PID。

因此,这个命令的含义是显示进程号为 10255 的进程的所有线程的实时资源占用情况。

如图:
在这里插入图片描述

3. 使用jstack定位代码

a. 线程号转换为16进制

printf "%x\n"  10289

如:
在这里插入图片描述

b. 获取线程快照

jstack -l 进程ID > ./jstack_result.txt 
如:
jstack -l 10255 > ./jstack_result.txt 

c. 根据线程号定位具体代码

cat jstack_result.txt |grep -A 100  2831

d. 简单的汇总指令,不用导出处文件,直接控制台查看

jstack <pid> |grep -A 200 <nid>
如:
jstack 10255 |grep -A 200 2831

解析:

  • 这个命令是在 Linux 中使用 jstack 工具打印 Java 进程的线程堆栈信息,并通过 grep 过滤出特定线程的堆栈信息及其后的200行信息。具体含义如下:

    • jstack <pid>:是用于打印指定 Java 进程的线程堆栈信息的命令,<pid> 是要查看的 Java 进程的进程号。
    • |:是管道符号,用于将前一个命令的输出作为后一个命令的输入。
    • grep -A 200 <nid>:是 grep 命令的选项之一,用于在输入中查找匹配的行,并显示匹配行及其后的200行信息。<nid> 是要匹配的线程 ID。

    因此,这个命令的含义是打印 Java 进程中指定线程的堆栈信息,并显示该线程的堆栈信息及其后的200行信息。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值