情女照片做杯子网站,深圳十大外包软件公司,江都建设总部网站,广告投放优化师简介
Arthas 是一款线上监控诊断产品#xff0c;通过全局视角实时查看应用 load、内存、gc、线程的状态信息#xff0c;并能在不修改应用代码的情况下#xff0c;对业务问题进行诊断#xff0c;包括查看方法调用的出入参、异常#xff0c;监测方法执行耗时#xff0c;类…简介
Arthas 是一款线上监控诊断产品通过全局视角实时查看应用 load、内存、gc、线程的状态信息并能在不修改应用代码的情况下对业务问题进行诊断包括查看方法调用的出入参、异常监测方法执行耗时类加载信息等大大提升线上问题排查效率。 可以解决如下问题:
这个类从哪个 jar 包加载的为什么会报各种类相关的 Exception我改的代码为什么没有执行到难道是我没 commit分支搞错了遇到问题无法在线上 debug难道只能通过加日志再重新发布吗线上遇到某个用户的数据处理有问题但线上同样无法 debug线下无法重现是否有一个全局视角来查看系统的运行状况有什么办法可以监控到 JVM 的实时运行状态怎么快速定位应用的热点生成火焰图怎样直接从 JVM 内查找某个类的实例
入门
启动Arthas
首先下载Arthas wget https://arthas.aliyun.com/arthas-boot.jar java -jar arthas-boot.jar 启动后的结果: 下面就是让我们选择需要检测的java线程, 如果是已经部署好的服务, 那么这里就会看到具体的线程id, 输入对应数字即可, 如果没有的话, 可以使用官方提供的demo程序 wget https://arthas.aliyun.com/math-game.jar java -jar math-game.jar 看到这里, 就说明Arthas已经启动好了, 我们可以正常使用它了.
命令
dashboard 通过总览, 我们就可以明确的知道环境配置信息, 线程运行情况(哪些线程占用cpu高, 哪些线程阻塞等待等等), 堆占用情况等等, 一目了然.
thread thread pid 查看某个线程的运行情况
thread --all thread -n i - 查看最忙的i个线程 thread -b - 找出当前阻塞其他线程的线程 如果没有, 就是上图所示
jad反翻译 从线程1的运行信息可以看到, 正在执行的是demoMathGame类下的main方法 如果我们在排查问题的时候, 不确定这段代码是否已经部署到产线, 就可以通过反编译的方式确认代码情况.
watch - 函数执行检测, 包括入参, 出参等等 这是反编译后的代码, 现在程序正在运行, 我们就可以看到primeFactors方法的调用情况.
watch 类全路径 方法名 returnObj - 返回值 watch 类全路径 方法名 params - 入参 jvm 查看jvm信息
查看运行环境, 内存管理, 类加载, 操作系统, 线程等情况
stack - 查看方法线程栈上下文链路调用 memory - 内存占用情况 vmoption - 查看更新 VM 诊断相关的参数 修改option选项值 更详细的请参考Arthas官方文档.