Java项目服务器cpu占用过高怎么办?

借用汤师爷的一句话:“麻匪一定要缴———没有麻匪的日子才是好日子”。

作为程序员,bug一定是要处理的,没有bug的日子才是好日子!你想想,你正吃着火锅唱着歌,突然收到生产环境异常,急需处理的通知,这火锅还怎么吃,歌还怎么唱。

今天就来聊聊突然收到Java项目服务器CPU过高我们如何处理。

1 先查看服务器上的进程CPU使用情况

[root@pro ~]# top

 2、使用ps 查看某个进程中的CPU占用情况:top -Hp <pid>

[root@pro ~]# top -Hp 14937

3、使用 jstack 获取线程快照并输出到某个文件中: jstack -l <pid> > ./<file>

其中pid,我们查到的是10进制数,需要转为16进制数: printf  "%x\n" <pid>

[root@pro ~]# printf "%x\n" 8375
20b7

 由于16进制以0x开头,所以我们应该在转换的线程号前添加0x, 则最终pid 为 0x20b7,然后获取线程快照

[root@pro ~]#  jstack -l 0x20b7 > ./8375.txt

4、jstack 命令格式

jstack [ option ] pid 
jstack [ option ] executable core 
jstack [ option ] [server-id@]remote-hostname-or-IP 

其中最常用的是: jstack [ option ] pid ,option 参数说明如下:

选项作用
-F当正常输出的请求不被响应时,强制输出线程堆栈
-m如果调用到本地方法的话,可以显示C/C++的堆栈
-l除堆栈外,显示关于锁的附加信息,在发生死锁时可以用jstack -l pid来观察锁持有情况
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值