内容简介:Arthas is a Java diagnostic tool that promises to help developers troubleshoot production issues for Java applications without modifying the code or restarting the server.Main features:安装非常简单
Arthas is a Java diagnostic tool that promises to help developers troubleshoot production issues for Java applications without modifying the code or restarting the server.
Main features:
- Useful for trouble-shooting jar file conflicts
- Decompile a class to ensure the code is running as expected
- View classloader statistics
- View the method invocation details
- Check the stack trace of specified method invocation
- Trace the method invocation to find slow sub-invocations
- Monitor method invocation statistics
- Monitor system metrics, thread states and CPU usage, gc statistics, and etc
- Support command line interactive mode, with auto-completed feature enabled.
- Support telnet and WebSocket, enabling both local and remote diagnostics with command line and browsers
Install
安装非常简单
curl -L https://alibaba.github.io/arthas/install.sh | sh
然后使用 ./as.sh
启动即可。
其他安装方式
实例
全局监控
进入 arthas 之后使用 dashboard
可以快速查看全局信息,包括系统基本信息,CPU 使用率,堆内存,gc 次数,gc 耗时等等
查看 JVM 线程堆栈信息
使用 thread
可以查看线程堆栈信息。当 thread 没有参数时会打印所有的线程信息。
thread
命令也支持打印当前最忙的前 N 个线程
thread -n 3
后面增加 id 可以打印指定线程堆栈
thread id
使用 -b
参数一键找出当前阻塞其他线程的线程
thread -b
目前只支持找出 synchronized 关键字阻塞住的线程, 如果是 java.util.concurrent.Lock, 目前还不支持。
查看类从哪一个 jar 加载
当知道类的路径时可以直接使用 sc -d package.Class
这样的方式来查看当前类的详细信息
$ sc -d demo.MathGame
class-info demo.MathGame
code-source /home/einverne/arthas/arthas-demo.jar
name demo.MathGame
isInterface false
isAnnotation false
isEnum false
isAnonymousClass false
isArray false
isLocalClass false
isMemberClass false
isPrimitive false
isSynthetic false
simple-name MathGame
modifier public
annotation
interfaces
super-class +-java.lang.Object
class-loader +-sun.misc.Launcher$AppClassLoader@5c647e05
+-sun.misc.Launcher$ExtClassLoader@197c17c6
classLoaderHash 5c647e05
信息中可以清晰的看到加载的 jar 的路径等等一些信息。
代码为什么没有执行
要回答这个问题,最好的方法就是立马检查下当前正在跑的代码是否符合预期。
jad demo.package.Class
直接查看当前运行的代码
查看函数调用栈耗时
如果特别关心某一函数的耗时情况,可以使用 trace 来查看
trace package.Class method
监控有异常的接口
使用 tt 命令可以记录下指定方法被调用时的入参和返回值。tt 是 TimeTunnel 的缩写,为了解决 watch 命令的复杂。
tt -t package.Class methodName -n 100 tt -t package.Class methodName -n 100 > temp.log
-n
表示会统计之后的多少请求, > temp.log
表示输出到 arthas 的 cache 中,地址在 ~/logs/arthas-cache/
下
回放请求
上面使用 tt 命令记录的内容可以用来回放请求,在 temp.log 日志中找到 index 表示的即为该请求的入参,使用 tt 命令可以用来回放请求,下面命令中的 index 就是文件中的 index
tt --play -i index
在使用回放的时候需要注意:1. ThreadLocal 信息丢失 2. 引用对象, tt 命令将当前环境的对象引用保存,如果方法对入参进行了修改,那么 tt 命令无法查看到准确的值。
watch 命令查看有异常的入参
tt 命令可以一直监控方法的入参,但是有的时候并不关心正常运行的参数,而只关心有异常的方法的入参,这个时候就可以使用 watch 命令
watch package.Class method -e -x 2 '{params[0], params[1].toString, throwExp}'
监控 JVM 运行状态
使用 jvm
命令即可查看 JVM 的运行状态
jvm
sysprop sysenv 查看系统变量
sysprop 可以查看系统变量,sysenv 可以查看系统的环境变量。
reference
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- alibaba arthas
- Alibaba Arthas 3.1.5版本支持火焰图,快速定位应用热点
- Alibaba Arthas实践--获取到Spring Context,然后为所欲为
- Alibaba应用诊断利器Arthas 3.0.5版本发布:提升全平台用户体验
- Alibaba Arthas 3.1.0版本:在线教程、内存编译器和强大的自动补全
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Cascading Style Sheets 2.0 Programmer's Reference
Eric A. Meyer / McGraw-Hill Osborne Media / 2001-03-20 / USD 19.99
The most authoritative quick reference available for CSS programmers. This handy resource gives you programming essentials at your fingertips, including all the new tags and features in CSS 2.0. You'l......一起来看看 《Cascading Style Sheets 2.0 Programmer's Reference》 这本书的介绍吧!
SHA 加密
SHA 加密工具
RGB HSV 转换
RGB HSV 互转工具