Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱。

  • Github:https://github.com/alibaba/arthas

  • 文档:https://alibaba.github.io/arthas

Arthas 3.1.2版本持续增加新特性,下面重点介绍:

  • logger/heapdump/vmoption/stop命令

  • 通过tunnel server连接不同网络的arthas,方便统一管控

  • 易用性持续提升:提示符修改为arthas@pid形式,支持ctrl + k清屏快捷键

logger/heapdump/vmoption/stop命令

logger命令

查看logger信息,更新logger level

  • https://alibaba.github.io/arthas/logger.html

查看所有logger信息

以下面的logback.xml为例:

<?xml version="1.0" encoding="UTF-8"?>
<configuration><appender name="APPLICATION" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>app.log</file><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern><maxFileSize>100MB</maxFileSize><maxHistory>60</maxHistory><totalSizeCap>2GB</totalSizeCap></rollingPolicy><encoder><pattern>%logger{35} - %msg%n</pattern></encoder></appender><appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender"><appender-ref ref="APPLICATION" /></appender><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern><charset>utf8</charset></encoder></appender><root level="INFO"><appender-ref ref="CONSOLE" /><appender-ref ref="ASYNC" /></root>
</configuration>

使用logger命令打印的结果是:

[arthas@2062]$ loggername                                   ROOTclass                                  ch.qos.logback.classic.LoggerclassLoader                            sun.misc.Launcher$AppClassLoader@2a139a55classLoaderHash                        2a139a55level                                  INFOeffectiveLevel                         INFOadditivity                             truecodeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jarappenders                              name            CONSOLEclass           ch.qos.logback.core.ConsoleAppenderclassLoader     sun.misc.Launcher$AppClassLoader@2a139a55classLoaderHash 2a139a55target          System.outname            APPLICATIONclass           ch.qos.logback.core.rolling.RollingFileAppenderclassLoader     sun.misc.Launcher$AppClassLoader@2a139a55classLoaderHash 2a139a55file            app.logname            ASYNCclass           ch.qos.logback.classic.AsyncAppenderclassLoader     sun.misc.Launcher$AppClassLoader@2a139a55classLoaderHash 2a139a55appenderRef     [APPLICATION]

appenders的信息里,可以看到

  • CONSOLE logger的target是System.out

  • APPLICATION logger是RollingFileAppender,它的file是app.log

  • ASYNC它的appenderRefAPPLICATION,即异步输出到文件里

查看指定名字的logger信息

[arthas@2062]$ logger -n org.springframework.webname                                   org.springframework.webclass                                  ch.qos.logback.classic.LoggerclassLoader                            sun.misc.Launcher$AppClassLoader@2a139a55classLoaderHash                        2a139a55level                                  nulleffectiveLevel                         INFOadditivity                             truecodeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar

更新logger level

[arthas@2062]$ logger --name ROOT --level debug
update logger level success.

heapdump命令

dump java heap, 类似jmap命令的heap dump功能。

  • https://alibaba.github.io/arthas/heapdump.html

dump到指定文件

[arthas@58205]$ heapdump /tmp/dump.hprof
Dumping heap to /tmp/dump.hprof...
Heap dump file created

只dump live对象

[arthas@58205]$ heapdump --live /tmp/dump.hprof
Dumping heap to /tmp/dump.hprof...
Heap dump file created

vmoption命令

查看,更新VM诊断相关的参数

  • https://alibaba.github.io/arthas/vmoption.html

查看所有的option

[arthas@56963]$ vmoptionKEY                    VALUE                   ORIGIN                 WRITEABLE
---------------------------------------------------------------------------------------------HeapDumpBeforeFullGC   false                   DEFAULT                trueHeapDumpAfterFullGC    false                   DEFAULT                trueHeapDumpOnOutOfMemory  false                   DEFAULT                trueErrorHeapDumpPath                                   DEFAULT                trueCMSAbortablePrecleanW  100                     DEFAULT                trueaitMillisCMSWaitDuration        2000                    DEFAULT                trueCMSTriggerInterval     -1                      DEFAULT                truePrintGC                false                   DEFAULT                truePrintGCDetails         true                    MANAGEMENT             truePrintGCDateStamps      false                   DEFAULT                truePrintGCTimeStamps      false                   DEFAULT                truePrintGCID              false                   DEFAULT                truePrintClassHistogramBe  false                   DEFAULT                trueforeFullGCPrintClassHistogramAf  false                   DEFAULT                trueterFullGCPrintClassHistogram    false                   DEFAULT                trueMinHeapFreeRatio       0                       DEFAULT                trueMaxHeapFreeRatio       100                     DEFAULT                truePrintConcurrentLocks   false                   DEFAULT                true

查看指定的option

[arthas@56963]$ vmoption PrintGCDetailsKEY                    VALUE                   ORIGIN                 WRITEABLE
---------------------------------------------------------------------------------------------PrintGCDetails         false                   MANAGEMENT             true

更新指定的option

[arthas@56963]$ vmoption PrintGCDetails true
Successfully updated the vm option.
PrintGCDetails=true

stop命令

之前有用户吐槽,不小心退出Arthas console之后,shutdown会关闭系统,因此增加了stop命令来退出arthas,功能和shutdown命令一致。

通过tunnel server连接不同网络的arthas

  • https://alibaba.github.io/arthas/web-console.html

在新版本里,增加了arthas tunnel server的功能,用户可以通过tunnel server很方便连接不同网络里的arthas agent,适合做统一管控。

启动arthas时连接到tunnel server

在启动arthas,可以传递--tunnel-server参数,比如:

as.sh --tunnel-server 'ws://47.75.156.201:7777/ws'

目前47.75.156.201是一个测试服务器,用户可以自己搭建arthas tunnel server

  • 如果有特殊需求,可以通过--agent-id参数里指定agentId。默认情况下,会生成随机ID。

attach成功之后,会打印出agentId,比如:

  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---./  O  \ |  .--. ''--.  .--'|  '--'  | /  O  \ '   .-'
|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |`.  `-.
|  | |  ||  |\  \    |  |   |  |  |  ||  | |  |.-'    |
`--' `--'`--' '--'   `--'   `--'  `--'`--' `--'`-----'wiki      https://alibaba.github.io/arthas
tutorials https://alibaba.github.io/arthas/arthas-tutorials
version   3.1.2
pid       86183
time      2019-08-30 15:40:53
id        URJZ5L48RPBR2ALI5K4V

如果是启动时没有连接到 tunnel server,也可以在后续自动重连成功之后,通过 session命令来获取 agentId:

[arthas@86183]$ sessionName           Value
-----------------------------------------------------JAVA_PID       86183SESSION_ID     f7273eb5-e7b0-4a00-bc5b-3fe55d741882AGENT_ID       URJZ5L48RPBR2ALI5K4VTUNNEL_SERVER  ws://47.75.156.201:7777/ws

以上面的为例,在浏览器里访问 http://47.75.156.201:8080/ ,输入 agentId,就可以连接到本机上的arthas了。

Arthas tunnel server的工作原理

browser <-> arthas tunnel server <-> arthas tunnel client <-> arthas agent

https://github.com/alibaba/arthas/blob/master/tunnel-server/README.md

易用性持续提升

  • 提示符修改为arthas@pid形式,用户可以确定当前进程ID,避免多个进程时误操作

    [arthas@86183]$ help
    
  • 增加ctrl + k清屏快捷键

总结

总之,3.1.2版本的Arthas新增加了logger/heapdump/vmoption/stop命令,增加了tunnel server,方便统一管控。另外还有一些bug修复等,可以参考

  • Release Note: https://github.com/alibaba/arthas/releases/tag/3.1.2

最后,Arthas的在线教程考虑重新组织,欢迎大家参与,提出建议:

  • https://github.com/alibaba/arthas/issues/847

Arthas 3.1.2版本发布: 增加logger/heapdump/vmoption命令,支持tunnel server相关推荐

  1. Alibaba Arthas 3.1.2版本发布:增加logger/heapdump/vmoption命令,支持tunnel server

    Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱. Github: https://github.com/alibaba/arthas 文档:https://alibaba.gith ...

  2. Arthas 3.1.2 版本发布 | 增加 logger/heapdump/vmoption 命令

    最近偶尔有用户反馈某些 HTTP 接口出现超时问题,而 web 服务端的 Trace 监控没有出现 http 返回值为 503 等异常情况.出现这种情况一般是web容器出现问题,客户端连 Arthas ...

  3. 阿里神器Arthas 3.1.2版本发布,新特性解读

    Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱. Github:https://github.com/alibaba/arthas 文档:https://alibaba.githu ...

  4. Java程序员的魔法杖-Arthas 3.1.2版本发布了

    Arthas已经成为我日常运维.线上排查的必备之品,听说最近更新版本了,今天这篇文章看下又增加了什么新的能力. Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱. Github:ht ...

  5. Alibaba 应用诊断利器 Arthas 3.0.5 版本发布:提升全平台用户体验

    Arthas从9月份开源以来,受到广大Java开发者的支持,Github Star数三个月超过6000,非常感谢用户支持.同时用户给Arthas提出了很多建议,其中反映最多的是: Windows平台用 ...

  6. cola_os|cola_os(v1.2.0)版本发布增加国产单片机SWM181例程

    一.前言 基于一段时间的优化cola os发布了1.2.0版本. 增加串口使用例程 优化任务管理 增加SWM181国产MCU例程 二.代码介绍 cola os说明 三.os代码 #ifndef _CO ...

  7. cyq.data mysql_CYQ.Data 轻量数据层之路 V4.3 版本发布[增加对SQLite,MySQL数据库的支持]...

    前言: 继上一版本:CYQ.Data 轻量数据层之路 V4.0 版本发布,又过去一个来月了,不过也过了一个新年了. 由于过年原因,因此框架也没多折腾什么,只是年前年后顺路把sqlite,MysqL两种 ...

  8. Dubbo学习总结(10)——里程碑式 Dubbo 2.7.5 版本发布,性能提升30%,支持 HTTP/2、TLS、Protobuf等特性。

    作者简介:刘军,GitHub账号Chickenlj,Apache Dubbo PMC,项目核心维护者,见证了Dubbo从重启开源到Apache毕业的整个流程.现任职阿里云云原生应用平台团队,参与服务框 ...

  9. Linux Deepin 12.12 正式版本发布--焕然一新,即可惊艳!

    Linux Deepin 12.12 正式版本发布 Linux Deepin 12.12 正式版经过团队历时一年的精心打造,携带着 Linux Deepin 家族最新应用软件和全新 Linux 平台桌 ...

最新文章

  1. 关于javascript的keycode
  2. RunTime技术总结
  3. Hadoop安装的ssh免密码登录步骤
  4. 打造轻量化的View Controller
  5. 回馈粉丝,包邮送一台全新iPad
  6. windows10会中php病毒吗,win10发现病毒自动删除怎么办
  7. 系统启动与内核管理 ;AWK部分 重要内容 (实验及awk的常见面试题)
  8. JMetro版本11.5.11和8.5.11发布
  9. mysql32位的能装在64位的电脑上吗,mysql32位能装64位电脑【excle中怎么将log值变回原来的数据库】...
  10. linux编译内核的步骤
  11. ajax 解决csrf的3种方法,input标签的文件上传
  12. 页面查询条件选框被隐藏的问题
  13. 98五笔86五笔及五笔字型口诀字根表
  14. c语言中输入数组时用不用加地址符,C语言中,用格式符”%s”输入字符数组时,数组名前不能加。...
  15. 虚拟机NAT模式无法上网
  16. 《编程珠玑,字字珠玑》45678读书笔记——编程技巧
  17. 商标遭遇侵权,企业该如何反击?
  18. 大数据Hive 面试以及知识点
  19. 清华大学计算机系2016名单,关于电子系2016 级、2017 级本科生分流至微纳电子系学生名单公示...
  20. oracle采购业务流程,ORACLE EBS 采购的业务流程

热门文章

  1. 家庭版取消灰色勾选加密内容以便保护数据的方法
  2. 计算机课堂听课情况记录表模板,教师听课评课情况记录表范例及模板.doc
  3. 汇编语言L0C,单片机汇编语言指令查表.doc
  4. 共享Excel编辑的一些资源
  5. 前端基础-04-盒子模型
  6. 产学交流 | 重庆理工大学计算机科学与工程学院一行到访芝诺数据
  7. 量子信息-学习记录13
  8. 【路径规划】(2) A* 算法求解最短路,附python完整代码
  9. 王者荣耀 微信登录 服务器找不到,王者荣耀微信登录失败怎么办 王者荣耀微信登录失败解决办法...
  10. 啃碎并发(一):Java线程总述与概念