• JVM故障运维工具的使用


    JVM故障运维工具

    1 jps 查看进程pid

    jps
    

    2 jmap 查看堆内存

    1 用来查看内存信息,实例个数以及占用内存大小

    #查看历史生成的实例
    jmap -histo <pid> > ./log.txt 
    #查看当前存活的实例,执行过程中可能会触发一次full gc
    jmap -histo:live 24452
    

    2 查看堆的内存使用情况

    jmap -heap 24452
    

    3 导出dump文件,使用可视化工具(例如jvisualvm)查看dump文件

    jmap -dump:format=b,file=jvm.dump 24452
    

    设置jvm参数,在内存溢出时自动输出dump文件。

    # -XX:+PrintGCDetails
    -XX:+HeapDumpOnOutOfMemoryError
    -XX:HeapDumpPath=./jvm.dump
    

    3 jstack 查看堆栈信息

    1 查看进程中线程状态与堆栈信息。

    使用jvisualvm同样可以可视化查看线程dump信息。

    jstack <pid>
    

    2 配合使用top+jstack定位CUP使用率过高(有个专门的小节)

    使用top找到使用率最高的线程。

    # jstack 36032 > 1.txt
    # cat 1.txt | grep -A 30 8ccc  
    

    4 jinfo 查询运行参数

    查看JVM参数

    jinfo -flags <pid>
    

    查看java系统参数

    jinfo -sysprops 29964
    

    5 jstat 查看堆内存使用情况、gc次数等

    查看gc情况

    jstat -gc 29964
    

    image

    S0/S1、E、O、M、CCSC分别为survivor区、Eden、老年代、元数据区、压缩类空间(单位KB)。

    YGC/FGC:YoungGC/FullGC次数

    YGCT/FGCT/GCT:YoungGC/FullGC/总GC耗时(单位S)

    观察各区域的变化

    jstat -gc pid 1000 10 (每隔1秒执行1次命令,共执行10次)
    

    计算速率

    Young GC的平均耗时可以通过 YGCT/YGC 公式算出
    Full GC的每次耗时可以用公式 FGCT/FGC 计算得出
    

    在每次gc后eden区使用一般会大幅减少,survivor和老年代都有可能增长,这些增长的对象就是每次Young GC后存活的对象,同时还可以看出每次Young GC后进去老年代大概多少对象,从而可以推算出老年代对象增长速率。

    查看jstat所有选项

    jstat --help
    jstat -options
    
  • 相关阅读:
    伪类选择器
    子元素和后代元素选择器
    常用的选择器
    CSS语法
    javascript中caller和callee call和apply
    我的第一篇
    Python— isinstance用法说明
    Python—对Excel进行读写操作
    RAID5,RAID10磁盘的创建
    vi/vim编辑器用法
  • 原文地址:https://www.cnblogs.com/dtyy/p/15873036.html
Copyright © 2020-2023  润新知