`
大涛学长
  • 浏览: 105022 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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]$ logger
name                                   ROOT
class                                  ch.qos.logback.classic.Logger
classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
classLoaderHash                        2a139a55
level                                  INFO
effectiveLevel                         INFO
additivity                             true
codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
appenders                              name            CONSOLE
                                        class           ch.qos.logback.core.ConsoleAppender
                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
                                        classLoaderHash 2a139a55
                                        target          System.out
                                        name            APPLICATION
                                        class           ch.qos.logback.core.rolling.RollingFileAppender
                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
                                        classLoaderHash 2a139a55
                                        file            app.log
                                        name            ASYNC
                                        class           ch.qos.logback.classic.AsyncAppender
                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
                                        classLoaderHash 2a139a55
                                        appenderRef     [APPLICATION]
从appenders的信息里,可以看到
CONSOLE logger的target是System.out
APPLICATION logger是RollingFileAppender,它的file是app.log
ASYNC它的appenderRef是APPLICATION,即异步输出到文件里
查看指定名字的logger信息
[arthas@2062]$ logger -n org.springframework.web
name                                   org.springframework.web
class                                  ch.qos.logback.classic.Logger
classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
classLoaderHash                        2a139a55
level                                  null
effectiveLevel                         INFO
additivity                             true
codeSource                             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]$ vmoption
KEY                    VALUE                   ORIGIN                 WRITEABLE
---------------------------------------------------------------------------------------------
HeapDumpBeforeFullGC   false                   DEFAULT                true
HeapDumpAfterFullGC    false                   DEFAULT                true
HeapDumpOnOutOfMemory  false                   DEFAULT                true
Error
HeapDumpPath                                   DEFAULT                true
CMSAbortablePrecleanW  100                     DEFAULT                true
aitMillis
CMSWaitDuration        2000                    DEFAULT                true
CMSTriggerInterval     -1                      DEFAULT                true
PrintGC                false                   DEFAULT                true
PrintGCDetails         true                    MANAGEMENT             true
PrintGCDateStamps      false                   DEFAULT                true
PrintGCTimeStamps      false                   DEFAULT                true
PrintGCID              false                   DEFAULT                true
PrintClassHistogramBe  false                   DEFAULT                true
foreFullGC
PrintClassHistogramAf  false                   DEFAULT                true
terFullGC
PrintClassHistogram    false                   DEFAULT                true
MinHeapFreeRatio       0                       DEFAULT                true
MaxHeapFreeRatio       100                     DEFAULT                true
PrintConcurrentLocks   false                   DEFAULT                true
查看指定的option
[arthas@56963]$ vmoption PrintGCDetails
KEY                    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]$ session
Name           Value
-----------------------------------------------------
JAVA_PID       86183
SESSION_ID     f7273eb5-e7b0-4a00-bc5b-3fe55d741882
AGENT_ID       URJZ5L48RPBR2ALI5K4V
TUNNEL_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修复等,可以参考
本文作者:中间件小哥
原文链接:https://yq.aliyun.com/articles/718577?utm_content=g_1000079878
本文为云栖社区原创内容,未经允许不得转载。
分享到:
评论

相关推荐

    阿里巴巴 Java性能诊断工具Arthas

    1. **性能瓶颈定位**:当应用程序出现性能问题时,Arthas的`trace`命令可以帮助追踪耗时操作,`profile`命令可以分析方法的执行耗时。 2. **异常问题排查**:通过`watch`命令监控异常抛出的地方,快速定位错误源。 ...

    JVM入门实战/arthas实战/垃圾回收算法/垃圾回收器/jvm内存模型分析

    1.3 Heap堆内存模型 第三节:定位垃圾对象的依据 1.1 引用计数法 1.2 可达性算法 第四节:垃圾回收算法 1.1标记清除算法 1.2复制算法 1.3 标记整理(标记压缩)算法 第五节:垃圾回收器 1.1Serial/Serial Old...

    arthas-离线版.tar.gz

    1. **命令行工具**:Arthas提供了丰富的命令行工具,如`asm`、`classloader`、`console`、`dump`等,方便开发者在不重启应用的情况下查看运行时信息,如类加载器、方法、变量等。 2. **JVM监控**:通过`jvm`命令,...

    arthas在idea中的插件

    如果没有,可以访问Arthas官方网站(https://alibaba.github.io/arthas/)下载最新版本的Arthas。解压下载的压缩包,并将其路径添加到系统的环境变量PATH中,这样IDEA才能找到Arthas。 现在,你可以在IDEA中使用...

    arthas最新版本arthas-packaging-3.7.0-bin

    本文将深入探讨Arthas最新版本`arthas-packaging-3.7.0-bin`的相关知识点。 首先,我们来看一下压缩包中的文件: 1. **as-service.bat** 和 **as.sh**:这两个文件分别是Windows和Unix/Linux环境下的启动脚本,...

    Arthas输出文档.doc

    - Arthas提供了丰富的命令集,如`asm`, `class`, `console`, `dump`, `jvm`, `monitor`, `trace`等,它们分别对应不同的诊断任务。例如,`asm`用于查看类的字节码,`class`用于查询类信息,`console`开启交互式...

    Arthas-WPFUI, 这是一个WPF的UI库(实际应该算个控件库吧).zip

    使用Arthas-WPFUI时,开发者需要有一定的WPF和.NET Framework基础知识,包括XAML语法、数据绑定、命令、依赖属性等概念。通过引入这个库,开发者可以节省大量编写基础控件的时间,专注于应用的核心功能开发,提高...

    阿里 arthas 3.1.0 离线文档

    Arthas 3.1.0版本的离线文档包含了官方提供的详细使用指南,便于开发者在没有网络或者网络速度较慢的情况下查阅。 在Arthas的离线文档中,每个文件对应一个或多个知识点: 1. **.buildinfo**: 这个文件通常包含...

    Arthas基本使用_线上热部署_arthas项目在线诊断_

    **Arthas:线上热部署与项目在线诊断** Arthas是阿里巴巴开源的一款强大的Java诊断工具,它提供了丰富的命令行接口,帮助开发者在不重启应用的情况下进行问题定位、性能分析和资源监控。Arthas的核心功能包括但不...

    研发-Java诊断工具-Arthas

    6. **堆内存分析**(Heap Dump):使用`heap`命令,可以快速生成堆内存快照,并提供简单的分析功能,帮助识别内存泄漏。 7. **线程分析**(Thread Dump):`thread`命令可以查看当前应用的线程信息,包括线程状态、...

    Arthas(arthas-3.7.1.zip)

    Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等...

    Arthas离线安装包-arthas.zip

    在内网环境下执行java -jar arthas-boot.jar 提示某些地址需要连网才可以访问。此时可以使用离线安装的方式。 1. 上传并解压缩 unzip arthas 至环境所需的目录 2. 运行 install-local.sh 安装成功后即可使用

    arthas命令总结(转载)

    【Arthas命令总结】 Arthas是一款由阿里巴巴开源的Java诊断工具,它提供了一组命令行工具,帮助开发者在不重启应用的情况下进行问题定位、性能优化和动态代码修改。Arthas支持Spring Boot、Spring Cloud等框架,...

    idea的arthas插件

    2. **命令提示**:插件提供了命令补全功能,开发者在输入Arthas命令时,可以得到智能提示,避免记忆复杂的命令格式。 3. **命令执行与结果展示**:在Idea中直接输入Arthas命令并执行,结果将直接在编辑器中显示,...

    linux上 arthas 的安装教程

    访问Arthas官方网站或者阿里云下载页面获取最新版本的Arthas安装包。 2. **解压**: 在Linux环境中,使用`unzip`命令解压缩下载的Arthas安装包,例如:`unzip arthas-packaging-3.6.0-bin.zip`。 3. **安装**: ...

    Arthas线上应用诊断利器概述.pdf

    例如,使用 Arthas可以查看Mybatis mapper的logger配置,动态查看Mybatis具体执行的SQL语句。 3. 重新定义StringBuilder类的代码。 Arthas可以重新定义StringBuilder类的代码,例如,在StringBuilder#toString() ...

    arthas监控安装jar

    - Arthas需要JDK环境,并且与Java版本兼容性有关,确保你的系统已安装正确的JDK。 - 在生产环境中使用Arthas时,要谨慎操作,避免对线上服务造成影响。 - 高级功能如AOP(面向切面编程)和ASM字节码操作可能需要...

    arthas命令.png

    arthas命令.png

    Arthas阿尔萨斯使用说明

    - 注意事项:这些命令通过字节码增强技术实现,可能会在线上环境中增加一定的性能开销。建议明确监控范围并适时取消增强。 #### 其他命令 - **查看或设置Arthas全局开关:** `options` - **搜索满足条件的结果:**...

    开源阿里JVM诊断工具最新版arthas-packaging-3.6.6

    阿里开源的JVM诊断工具Arthas是一款强大的Java运行时诊断和分析工具,其最新版本为`arthas-packaging-3.6.6`。这款工具旨在帮助开发者在不重启应用的情况下,解决线上问题,进行性能优化,以及深入理解应用程序的...

Global site tag (gtag.js) - Google Analytics