GC日志可视化分析 & JVM状态可视化 工具整理

目录

 

一、GC日志可视化分析工具

    1. 概述

    2. GCeasy

    3. GCPlot

    4. JClarity

    5. GcViewer

二、JVM状态可视化(JVisualVM)

    1. 概述

    2. 运行

    3. 安装插件

    4. 远程监控

        4.1 jstatd连接 

        4.2 JMX连接(以Tomcat为例)


一、GC日志可视化分析工具

    1. 概述

            本文选取https://fasterj.com/tools/gcloganalysers.shtml 中按更新日期排序的GC日志分析工具的前四个,好处:目前都还有人维护;

            实验GC日志生成参数:-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/Desktop/gc.txt;

            JDK8;macOS;

            工具包含主要指标(Metrics):JVM Heap Size(Generation / Allocated space / before GC / after GC);Throughput;Pause(Minor GC / Full GC / count);Reclaimed Bytes;GC count;GC causes;Allocatied Objects Size;Promoted Object Size;created bytes;

            本地部署的工具比在线工具快;

    2. GCeasy

            部署 https://gceasy.io/index.jsp#features

            1. 将GC日志文件gc.txt压缩成zip;

            2. 访问https://gceasy.io/index.jsp#features,完全在线,上传zip;

            3. Analyze,多等一会,将会展示数据和图表;     

    3. GCPlot

            部署(同官网)https://gcplot.com/

            1. 安装docker;

            2. 在终端运行命令:docker run -d -p 80:80 gcplot/gcplot;

            3. 在浏览器访问地址:http://127.0.0.1;用户名和密码,均为admin;

            4. General --> Upload GC Log --> 选择文件 --> 点击Upload按钮;

            5. Analysis Groups --> Files --> 点击上传的GC日志gc.txt --> 将会JVM info,指标按tab页分类;

    4. JClarity

            部署(付费)https://www.jclarity.com/censum/

            1. 在官网选择试用,填写信息(邮箱),将会收到下载地址和uuid;

            2. 在下载页输入邮箱、uuid、操作系统,点击submit,将会收到包含licence key的邮件,浏览器将下载安装包;

            3. (macOS下载tgz)双击tgz文件,将解压后目录下的文件移动到应用程序目录下,在启动台点击icon运行;

            4. 首次运行输入licence key;

            5. 点击Analyse a GC Log;上传GC日志文件gc.txt;

            6. 将会展示分析结果和建议(ANALYTICS,如?图所示)、图表和数据(GRAPHS AND DATA);

GC日志可视化分析 & JVM状态可视化 工具整理_第1张图片 Clarity分析功能截图

    5. GcViewer

            部署 https://github.com/chewiebug/GCViewer

            1. 下载工程;

            2. 在Intellij idea中打开;运行com.tagtraum.perf.gcviewer.GCViewer类的main函数;

            3. 点击左上角打开GC日志文件gc.txt;(View菜单可调整折线图及图例,图表分辨率可调整,如下?图)

View菜单调整折线图图例
GC日志可视化分析 & JVM状态可视化 工具整理_第2张图片 分辨率调整

 

二、JVM状态可视化(JVisualVM)

    1. 概述

            建议与被监控程序运行在不同机器上(远程监控)。

            安装插件让JVisualVM完整。(常用:Virsul GC、MBeans)

    2. 运行

            在$JAVA_HOME/bin目录下,运行jvisualvm命令

            启动时多等一会,将会在左侧菜单栏看见本地Java应用

    3. 安装插件

            JVisualVM插件说明 https://visualvm.github.io/plugins.html           

            菜单栏 --> 工具(T) --> 插件(P) --> 可用插件 --> 全选,安装

            配置JConsole Plugins

            1. 下载https://github.com/TheLQ/GamersClub/tree/master/build/bcf736a518834fe7aa689d74d5ca1b/demo/management/JTop JTop.jar;

            2. 左侧菜单栏,本地 --> 双击VisualVM,进入VisualVM监控页--> 在右侧监控页,选择"JConsole Plugins" tab页,看见no jconsole plugin installed提示,点击configure plugins按钮,将JTop.jar添加进来,应用并重启JVisualVM;

    4. 远程监控

            远程机器操作系统:Linux

        4.1 jstatd连接 

            1. 在/etc/hosts文件末尾增加一行:

该机器ip(可通过ifconfig命令获得)  hostname(可通过hostname命令获得)

 

           2. 在远程机器$JAVA_HOME/bin目录下,新建jstatd.all.policy文件,内容如下:

grant codebase "file:${java.home}/../lib/tools.jar" {

 permission java.security.AllPermission;

};

            3. 在远程机器$JAVA_HOME/bin目录下,执行命令:jstatd -J-Djava.security.policy=jstatd.all.policy &,将后台运行,执行成功情况下不输出任何信息;

            4. 测试是否能远程监控Java程序,在本机执行命令:jps 远程机器ip,将输出远程机器上的Java进程

            5. JVisualVM左侧菜单栏,远程,右键 --> 添加远程主机 --> 输入远程主机IP --> 左侧菜单栏,远程主机IP上右键 --> 添加jstatd连接,默认端口1099;若成功,左侧菜单栏远程主机IP下,将看到jstatd进程及其它运行在远程主机上的Java进程,以及它们的pid;

        4.2 JMX连接(以Tomcat为例)

            1.  编辑Tomcat的bin目录下的catalina.sh,在首部注释块之后添加:(jmxremote.port端口号可修改为任一未被占用的端口号)

JAVA_OPTS="-Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"

             2. 重启Tomcat;(配置了JMX连接的Tomcat,shutdown关闭时会报错误,无法关闭,Error: Exception thrown by the agent : java.rmi.server.ExportException: Port already in use: 9999;  此时kill -9 杀死占用9999端口的进程即可,即关闭Tomcat进程;)

            3. JVisualVM左侧菜单栏 --> 远程主机IP上右键 --> 添加JMX连接 --> IP后添加jmxremote.port指定的端口号,勾选不要求SSL连接;若成功,左侧菜单栏远程主机IP下,将看到带JMX logo的进程;

            使用安全凭证,可参考:https://www.cnblogs.com/sunshine-2015/p/5547128.html

 

你可能感兴趣的:(JVM,GC,LOG,分析工具,JVisualVM)