美文网首页
线上cpu 内存占用高的排查

线上cpu 内存占用高的排查

作者: 小绵羊你毛不多 | 来源:发表于2018-08-21 16:50 被阅读0次

    cpu占用高

    1.查看进程

    top 查看资源占用情况   (交互 M P分别是按照内存和cpu排序  q退出) 
    

    top详解

    1. 查找线程 : 查看该进程所有线程信息,找到占用率最高的那个
    top -H -p <pid> 
    

    或者

    ps -mp <pid> -o THREAD,tid,time
    
    1. 将线程id转换成十六进制
     printf "%x\n" <pid>
    
    1. 查找java的堆栈信息
    jstack <pid> | grep -a 线程id(十六进制)
    

    内存占用高

     jstat:JVM统计监测工具
    
    1. jstat命令可以查看堆内存各部分的使用量,以及加载类的数量
      • 命令的格式如下:jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数] jstat详情参考

    -gcutil : 总结垃圾回收统计

     [~]$ jstat -gcutil <pid> 
     S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT
    62.12   0.00  81.36  28.82  95.68    -     12    0.736     0    0.000    0.736
    
    image
    1. 查看进程的堆栈情况
    jstack <pid> >>jstack.out
    

    或者使用 jmap(Memory Map) 查看内存情况 , 如果运行在64位JVM上,可能需要指定-J-d64命令选项参数。

    1.查看进程堆内存使用情况

    jmap -heap <pid>
    

    2.查看堆内存中的对象数目、大小统计直方图,如果带上live则只统计活对象

    jmap -histo[:live] <pid>
    

    3.用jmap把进程内存使用情况dump到文件中,再用jhat分析查看

    jmap -dump:format=b,file=<dumpFileName> <pid>
    

    具体可查阅这个文章 JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解

    jps 主要用来输出JVM中运行的进程状态信息

    visual vm使用

    相关文章

      网友评论

          本文标题:线上cpu 内存占用高的排查

          本文链接:https://www.haomeiwen.com/subject/byujiftx.html