zoukankan      html  css  js  c++  java
  • 【JAVA】 jvm故障排查工具

    JAVA 项目常用故障排查

    第三方 诊断工具 Greys、Arthas 也非常优秀
    Greys 、 https://github.com/oldmanpushcart/greys-anatomy
    Arthas、https://alibaba.github.io/arthas/quick-start.html

    常用命令

    1、pidstat

    查看进程的 cpu、memory、disk 使用情况,已定时轮询的方式

    # 安装
    $ yum install sysstat  
    $ apt-get install sysstat
    
    # 每一秒钟采样一次 一共采样3次 采样进程为13084
    # -p 指定进程号
    # memory 情况
    $ pidstat -r -p 13084 1 3
    # cpu 情况
    $ pidstat -u -p 13787 1 3
    # disk 情况
    $ pidstat -d -p 13787 1 3
    
    

    2、top

    查看主机整体状态

    # 查看总内存
    # 主机的总内存  单位字节 
    KiB Mem :  7965884 total
    
    # 或
    $  cat /proc/meminfo | grep MemTotal 
    

    3、jps

    jdk/bin 自带,只列出java 相关进程

    jps -m -l
    
    

    4、jstat

    jdk自带,对Java应用程序的资源和性能进行实时的命令行的监控

    
    # 521是进程号,1000单位是毫秒即1秒。命令解释:每秒查一次类加载情况,一共查两次结束。
    
    jstat -class -t 521 1000 2
    
    
    参数 说明
    -class 显示ClassLoad的相关信息
    -compiler 显示JIT编译的相关信息
    -gc 显示和gc相关的堆信息,单位KB
    -gccapacity 显示各个代的容量以及使用情况,容量单位KB
    -gcmetacapacity 显示metaspace的大小
    -gcnew 显示新生代信息
    -gcnewcapacity 显示新生代大小和使用情况
    -gcold 显示老年代和永久代的信息
    -gcoldcapacity 显示老年代的大小
    -gcutil 显示垃圾收集信息
    -gccause 显示垃圾回收的相关信息(通-gcutil),同时显示最后一次或当前正在发生的垃圾回收的诱因
    -printcompilation 输出JIT编译的方法信息

    5、jinfo

    jdk 自带,查询/设置运行中的java项目jvm参数

    # 查看进程为66156的所有 jvm 参数
    jinfo -flags  66156
    
    # 查看OldSize的值
    # jinfo -flag OldSize  13787
    -XX:OldSize=716177408
    
    

    6、jmap

    jdk 自带, 导出堆到文件

    # -histo 进程号为13787的对象统计信息
    jmap -histo 13787 > s.txt
    # -dump 当前堆快照,mat分析必备,13787进程号
    jmap -dump:format=b,file=heap.hprof 13787
    # 打印 进程13787 的堆统计信息,常用非常友好的输出
    jmap -heap 13787
    
    

    7、jhat

    jdk自带堆分析工具,可分析.hprof 文件,然后会开启一个服务器,使用浏览器查看

    # 使用http://127.0.0.1:7000 查看分析,提供OQL 查询
    jhat heap.hprof
    
    

    8、jstack

    jdk自带,查看线程堆栈

    # 打印进程为13787的线程堆栈 -l 参数用于打印锁的附加信息
    jstack -l 13787
    

    9、jstatd

    jdk自带,是一个RMI服务端程序,相当于代理服务器,建立本机与远程服务器通信,使用时注意权限。

    10、jcmd

    jdk自带,是个多功能命令行,oracle推荐使用jcmd 替换 jmap

    # 列出所有的正在运行的java虚拟机(java项目)
    jcmd -l
    
    # 查看指定虚拟机支持的jcmd 命令,数字是进程号
    jcmd 13787 help
    
    # 查看vm运行时间
    jcmd 13787 VM.uptime
    
    # 查看线程信息
    jcmd 13787 Thread.print
    
    # 打印系统properties
    jcmd 13787 VM.system_properties
    
    # 获得vm启动参数
    jcmd 13787 VM.flags
    
    # 获取性能统计相关信息
    jcmd 13787 PerfCounter.print
    
    
    “年轻时,我没受过多少系统教育,但什么书都读。读得最多的是诗,包括烂诗,我坚信烂诗早晚会让我邂逅好诗。” by. 马尔克斯
  • 相关阅读:
    PAT 天梯赛 L1-002 【递归】
    HDU_2717_Catch That Cow
    Stock Exchange (最大上升子子串)
    Lorenzo Von Matterhorn(map的用法)
    Ignatius and the Princess IV (简单DP,排序)
    投掷硬币(概率dp)
    Find The Multiple (DFS递归)
    24 Game
    棋盘问题
    linux上的文件服务
  • 原文地址:https://www.cnblogs.com/jzsg/p/11011627.html
Copyright © 2011-2022 走看看