cpu飙高处理步骤(linux)

cpu飙高处理步骤

1.top查找出哪个进程消耗的CPU高(top -c)

2.top -h -p查找出哪个线程消耗的cpu高(top -h -p pid)

3.printf%x进行pid的进制转换

4.jstack记录进程的堆栈信息

5.找出消耗CPU最高的线程信息

内存飙高处理步骤

1.jstat命令查看FGC发生的次数和消耗的时间,次数越多,耗时越长说明存在问题;

2.连续查看jmap -heap查看老生代的占用情况,变化越大说明程序存在问题;

1.使用连续的jmap -histo:live命令导出文件,比对加载对象的差异,差异部分一般是发生问题的地方。

GC引起的单核飙高

1.单个CPU占用率高,首先从GC查起。

常见SY飙高

1.线程上下文切换频繁

2.线程太多

CPU 飚高

一般是死循环或者死锁问题导致。

  1. 通过 top 命令找到 CPU 消耗最高的进程,并记住进程 ID {pid}。
    top -M -n 2 -d 3 >{pid}/top.txt 查看top

  2. 再次通过 top -Hp {pid} 找到 CPU 消耗最高的线程 ID,并记住线程 ID(十进制).

3.通过 JDK 提供的 jstack 工具 dump 线程堆栈信息到指定文件中。
jstack {pid} >{pid}/jstack_1.txt 一次堆栈快照 备用

jstack {pid} >{pid}/jstack_2.txt 两次堆栈快照 备用

由于刚刚的线程 ID 是十进制的,而堆栈信息中的线程 ID 是16进制的,因此我们需要将10进制的转换成16进制的,并用这个线程 ID 在堆栈中查找。
使用 printf “%x\n” [十进制数字] ,可以将10进制转换成16进制。
通过刚刚转换的16进制数字从堆栈信息里找到对应的线程堆栈。就可以从该堆栈中看出端倪。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值