JavaWeb在线问题.Linux服务器CPU核查

什么场景需要排查CPU占用?

系统访问慢,卡顿,超时时

核查步骤

定位进程(命令:top)

定位线程(命令:top -Hp PID)

定位代码位置(命令:jstack)

思路:

  1. top定位导致CPU利用率过高的进程,当然也可能不是自己服务的进程
  2. 如果是其他进程,那这个情况多了
  3. 如果是Java服务进程,就需要看看线程情况

定位进程

top 命令

 找到PID,当然也可用ps -ef | grep java找

PID为:64421

 定位线程

top -Hp PID

top -Hp 64421 然后按P(以 CPU 占用率大小的顺序排列进程列表)

线程PID 64427

定位代码 jstack

也可以将其转换为16进制形式(因为 java native 线程以16进制形式输出)

printf %x 64427

[root@wkties20220629prod1 ~]# printf %x 64427

fbab

jstack java进程PID | grep  上面输出的字符串 -A 30 --color

如:jstack 64421 | grep  fbab -A 30 --color

或者使用jstack 64421打印出所有线程栈日志,然后使用线程名称搜索 

 场景导致CPU狂飙的场景

  1. 死循环
  2. 频繁GC
  3. 竞争锁,频繁切换上下文
  4. 序列化和发序列号;正则表达式匹配

END

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闲猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值