如何定位cup占用过高问题

CPU负载过高解决问题过程

(1)根据top命令找到占用cup高的进程编号,此处以pid 8211为例


(2)找到该进程pid后,首先显示该进程线程列表,并按照cup占用高的线程进行排序

          ps -mp  8211 -o THREAD,tid,time | sort -rn


(3)找到耗时高 cup占用率高的线程号 如8251,将该线程id转换为16进制的格式

        printf "%x\n" 8251

(4)打印线程的堆栈信息

 

          jstack -l 8209 > /home/8251.stack

(5)在堆栈文件中搜索线程ID等于nid=0x203b的线程,即可列出该线程对应的类

(6)根据线程信息找到对应的类定位问题即可

 

常用命令如下:

 (1)jstat命令
     jps -lvm   输出当前服务器进程信息 带jar包路径以及启动内存设置参数
     
     jstat -gc pid  查看jvm各区域内存使用情况 以及垃圾回收情况统计
     
     jstat -gcutil pid 查看已使用空间占总空间的百分比

 (2)jmap命令
     jmap -heap pid  显示Java堆详细信息
     
     jmap -dump:format=b,file=文件名 [pid]   导出内存dump文件至本地 

参考链接

服务器负载过高问题分析

Linux下Java线程详细监控和其dump的分析使用

       常用的 JVM 性能调优监控工具

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值