Java性能监控工具Arthas实践

1. 启动Demo

在dos窗口输入:

curl -O https://alibaba.github.io/arthas/arthas-demo.jar
java -jar arthas-demo.jar

arthas-demo是一个简单的程序,每隔一秒生成一个随机数,再执行质因数分解,并打印出分解结果。

2. 启动arthas

在命令行下面执行(使用和目标进程一致的用户启动,否则可能attach失败):
蓝线以左是java开的demo(质数分解),蓝线以右是启动arthas的窗口
Java性能监控工具Arthas实践_第1张图片

  • dashboard——当前系统的实时数据面板
    输入dashboard,按回车/enter,会展示当前进程的信息.由下图最后一行重复内容可知,它会循环更新信息。按ctrl+c可以中断执行。
    Java性能监控工具Arthas实践_第2张图片
  • thread——查看当前 JVM 的线程堆栈信息
    通过thread命令来获取到arthas-demo进程的Main Class。输入“thread 1”会打印线程ID 1的栈,通常是main函数的线程。
    Java性能监控工具Arthas实践_第3张图片
  • jvm——查看当前 JVM 的信息
    主要消息由以下几部分组成:
  1. CLASS-LOADING 2. GARBAGE-COLLECTORS 3. MEMORY 4. OPERATING-SYSTEM 5. THREAD
    局部图:
    Java性能监控工具Arthas实践_第4张图片
  • watch——方法执行数据观测
    通过watch命令来查看demo.MathGame#primeFactors函数的返回值:
    Java性能监控工具Arthas实践_第5张图片
    从上图可看出,watch命令是通过字节码增强技术来实现的,会在指定类的方法中插入一些切面来实现数据统计和观测,因此在线上、预发使用时,请尽量明确需要观测的类、方法以及条件。

注monitor/watch/trace相关的命令还有:
monitor——方法执行监控
trace——方法内部调用路径,并输出方法路径上的每个节点上耗时
stack——输出当前方法被调用的调用路径
tt——方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测

你可能感兴趣的:(BugKill,Java特性的日常get,计算机基础知识,java,jvm,arthas,性能调优,监测工具)