欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

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

发布时间:2024/8/23 编程问答 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Arthas 3.1.2 版本发布 | 增加 logger/heapdump/vmoption 命令 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

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

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它的appenderRef是APPLICATION,即异步输出到文件里

查看指定名字的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功能。

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,方便统一管控。


原文链接
本文为云栖社区原创内容,未经允许不得转载。

总结

以上是生活随笔为你收集整理的Arthas 3.1.2 版本发布 | 增加 logger/heapdump/vmoption 命令的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。