linux CPU过高如何找到出问题的代码

1、找出最耗费CPU的进程pid

使用 top 命令找出,如下图 pid=20142
在这里插入图片描述

2、找出该pid最耗费资源的线程(不一定是一个)

top -Hp pid
在这里插入图片描述在这里,就是 top -Hp 20142,找到最耗费资源的线程id=20167

3、将线程id转换成16进制

printf ‘%x\n’ 线程id
即:printf ‘%x\n’ 20167 ==>> 4ec7
在这里插入图片描述

4、查看或保存栈信息

查看:jstack -l 20142 | grep -A 10 ‘4ec7’
ps: -A 表示从目标行后10行
在这里插入图片描述保存:jstack -l 20142 > jstack.info
将生成一个 jstack.info 的文件,可以打开这个文件去查询 ‘nid=0x4ec7’ 找到线程相关信息

5、备份堆信息

jmap -dump:format=b,file=jmap.info pid

ps:
查询进程的线程总个数:ps -Lfp pid | wc -l
查看进程运行时间: ps -mp pid
进程情况: ps -Tp pid

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值