java系统卡顿如何排查_生产问题定位与排查 - CPU占用过高造成系统卡顿

1.用top命令定位哪个进程对CPU的占用过高

命令:top

[root@izbp1c527]#top

top - 13:30:59 up 49 days, 11:18,  1 user,  load average: 0.22, 0.13, 0.33

Tasks:  84 total,   2 running,  82 sleeping,   0 stopped,   0 zombie

%Cpu(s): 85.7 us, 14.3 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

KiB Mem :  1882080 total,    73448 free,  1182724 used,   625908 buff/cache

KiB Swap:        0 total,        0 free,        0 used.   512980 avail Mem

PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND

16573 root      20   0 2398708 436044   5500 S 96.7 23.2  13274:56 java

1 root      20   0   59952   2716   1336 S  0.0  0.1  30:48.77 systemd

2 root      20   0       0      0      0 S  0.0  0.0   0:00.86 kthreadd

4 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H

6 root      20   0       0      0      0 S  0.0  0.0   0:56.06 ksoftirqd/0

7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0

8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh

9 root      20   0       0      0      0 R  0.0  0.0  18:10.25 rcu_sched

10 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 lru-add-drain

2.用ps命令进一步定位是哪个线程tid引起的CPU占用过高

命令:ps H -eo pid,tid,%cpu | grep ${pid}

或:ps -mp pid -o THREAD,tid,time

[root@izbp1c527]# ps H -eo pid,tid,%cpu,%mem | grep 16573

16573 16573  0.0 23.1

16573 16586  0.0 23.1

16573 16587  0.0 23.1

16573 16588 22.0 23.1   --> 说明该进程对CPU的占用很高

16573 16589  7.2 23.1

16573 16590  0.0 23.1

16573 16591  0.0 23.1

16573 16592  0.0 23.1

3.使用jstack命令查看栈信息

# 1.查看进程的大概的栈信息

命令:jstack ${pid}

[root@izbp1c527]# jstack 16573

4.转换线程编号tid为16进制(计算器或指令转换)

命令:printf "%x\n" ${tid}

[root@izbp1c527]# printf "%x\n" 16588

40cc

5.打印出问题线程的栈信息,从而定位到源码的位置

命令:jstack -F ${pid}|grep ${tid的16进制值} -A60

jstack -F 31067|grep 796f -A60

[root@izbp1c527]# jstack  16573|grep 40cc -A60

"Concurrent Mark-Sweep GC Thread" os_prio=0 tid=0x00007fd72003e800 nid=0x40cc runnable

"VM Periodic Task Thread" os_prio=0 tid=0x00007fd7200f2800 nid=0x40d5 waiting on condition

JNI global references: 42846

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值