java 进程100_java进程 cpu100%问题排查

排查java进程cpu100%的大致过程

之前遇到过

之前也遇到过cpu 100%的问题,原因是while循环,死循环了,一直占有cpu。

cpu为什么会100%

我们都知道cpu是时分(time division)的,操作系统里有很多线程,每个线程的运行时间由cpu决定,cpu会分给每个线程一个时间片,时间片是一个很短的时间长度,

如果在时间片内,线程一直占有,则是100%;

我们应该意识到,cpu运行速度很快(主频非常高),除非密集型耗费cpu的运算,其它类型任务都会在小于时间片的时间内结束。

cpu 100%大致排查过程

排查java cpu100%的问题,大致步骤是固定的,

首先找到占用cpu的进程,

如果是java进程,

则继续查看是哪个线程占用cpu,

然后根据线程id从线程栈中找到对应线程栈,

到这里,问题基本也就解决了。

故事背景

今天后台管理系统出现cpu 100%,这个问题间歇性出现,后台管理系统使用ssm(spring+springmvc+mybatis)+shiro实现,用户量很小,所以可以排除高并发导致。接下来,我们按照前述排查步骤,进行排查。

找到cpu 100%的进程

登录linux服务器找到占用cpu的进程,使用top

top

找出服务器的所有java进程,

ps -ef | grep java

或者使用

jps

经对比,占用cpu的进程是java进程,继续挖,找出占用CPU的线程

top -H -p pid

7cc592184be8fcacc2d70b46823ad203.png

-H表示以线程的维度展示,默认以进程维度展示。

一共4个占用cpu的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值