`
大涛学长
  • 浏览: 119270 次
  • 性别: 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
本文为云栖社区原创内容,未经允许不得转载。
分享到:
评论

相关推荐

    subunit-devel-1.4.0-14.el8.x64-86.rpm.tar.gz

    1、文件说明: Centos8操作系统subunit-devel-1.4.0-14.el8.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf subunit-devel-1.4.0-14.el8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm

    TIA-Portal-V19-HSP.zip

    TIA_Portal_V19_HSP.zip

    自己搭建的无人机跟踪实验,主要讲软件,硬件的需要等等,为初学者提供学习建议及需要学习的内容,讲解使用到的代码等.zip

    自己搭建的无人机跟踪实验,主要讲软件,硬件的需要等等,为初学者提供学习建议及需要学习的内容,讲解使用到的代码等.zip

    stunnel-5.56-5.el8-3.x64-86.rpm.tar.gz

    1、文件说明: Centos8操作系统stunnel-5.56-5.el8_3.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf stunnel-5.56-5.el8_3.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm

    西门子PLC与ABB变频器Modbus通讯实战:参数读写、启停控制及触摸屏集成

    内容概要:本文详细介绍了西门子S7-1200 PLC与ABB ACS510变频器通过Modbus协议进行通讯的方法。首先讲解了硬件连接,包括RS485通讯线的正确接法和终端电阻的使用。接着深入探讨了PLC程序的设计,涵盖Modbus主站的初始化、参数读写(如频率设定、启停控制)、以及错误处理方法。同时,提供了触摸屏(WinCC Basic)的操作指导,包括变量关联、按钮绑定和数据显示。最后给出了常见问题的解决方案,确保通讯稳定可靠。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是需要进行PLC与变频器通讯调试的工作人员。 使用场景及目标:适用于需要将西门子PLC与ABB变频器进行Modbus通讯的应用场合,帮助工程师快速掌握通讯配置、参数设置、启停控制及触摸屏集成的具体步骤,提高工作效率并减少调试时间。 其他说明:文中提供了详细的代码示例和注意事项,有助于读者更好地理解和应用相关技术。此外,强调了硬件检查的重要性,避免因接线问题导致的通讯失败。

    Zwift离线版-Windows端教程

    Zwift离线版-Windows端教程

    2023-04-06-项目笔记 - 第四百五十一阶段 - 4.4.2.449全局变量的作用域-449 -2025.03.28

    2023-04-06-项目笔记-第四百五十一阶段-课前小分享_小分享1.坚持提交gitee 小分享2.作业中提交代码 小分享3.写代码注意代码风格 4.3.1变量的使用 4.4变量的作用域与生命周期 4.4.1局部变量的作用域 4.4.2全局变量的作用域 4.4.2.1全局变量的作用域_1 4.4.2.449局变量的作用域_449- 2025-03-28

    十六届蓝桥杯单片机模拟赛资源包.zip

    学习资料:十六届蓝桥杯单片机模拟赛资源包

    机器人控制领域的超轨双光与RIC二光PID程序解析及其应用

    内容概要:本文详细解析了超轨双光PID和RIC二光PID两种开源控制程序的设计思路和实现细节。首先介绍了超轨双光PID程序的核心计算方法,包括PID计算、误差获取以及参数整定等方面的内容。接着探讨了RIC二光PID程序的独特之处,如误差合成、参数自适应和遗忘因子的应用。文中强调了积分项防爆处理、微分项灵敏度提升、传感器布局优化等关键技术点,并提供了调试建议和实践经验。此外,还讨论了增量式PID结构、状态观测器、PWM占空比转换等实用技巧。 适合人群:对机器人控制领域感兴趣的初学者和技术爱好者,尤其是希望深入了解PID控制算法的人群。 使用场景及目标:适用于需要理解和实现PID控制算法的实际工程项目,特别是涉及双光传感器的小车控制系统。目标是帮助读者掌握PID控制的基本原理和高级优化技巧,提高系统的稳定性和响应速度。 其他说明:文中提供的代码片段和调试建议非常实用,建议读者在实践中结合这些内容进行实验和调试,以便更好地理解PID控制的工作机制。

    putty0.80中文设置文件本地目录保存版

    putty0.80CN-X64本地记录

    subunit-1.4.0-14.el8.x64-86.rpm.tar.gz

    1、文件说明: Centos8操作系统subunit-1.4.0-14.el8.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf subunit-1.4.0-14.el8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm

    基于Matlab/Simulink的IEEE RBTS BUS4电力系统仿真模型构建与故障分析

    内容概要:本文详细介绍了如何利用Matlab 2016a的Simulink工具箱搭建IEEE RBTS BUS4标准电力系统仿真模型。首先,文章讲解了系统的基本结构和主要元件的参数设置方法,如主变压器、母线、输电线路等。其次,针对测量模块的布置进行了指导,确保能够精确获取电压和电流数据。再次,探讨了故障注入的方法及其对系统的影响,包括三相短路故障的设置和效果分析。此外,还讨论了分布式电源(如光伏)的接入方式以及其对系统稳定性的影响。最后,提供了批量仿真和数据采集的一些实用技巧。 适合人群:从事电力系统研究和技术开发的专业人士,尤其是有一定Matlab/Simulink使用经验的研究人员。 使用场景及目标:①帮助研究人员快速掌握IEEE RBTS BUS4标准系统的建模方法;②提供详细的故障注入和分布式电源接入案例,便于理解和应用;③通过具体实例展示如何优化系统性能,提高仿真精度。 其他说明:文中不仅包含了具体的参数设定和代码片段,还有许多实践经验分享,有助于读者更好地理解和运用所学知识进行实际项目开发。

    zhengquan看看看咯

    zhengquan看看看咯

    计算机概论教学课件.pdf

    计算机概论教学课件.pdf

    LanQiaoCup-master-蓝桥杯刷题项目

    LanQiaoCup-master-蓝桥杯刷题项目

    用matlab实现的mpc模型预测控制,用matlab的quadprog函数实现了线性mpc函数双积分控制,倒立摆控制,车辆云动学模型控制,车辆动力学模型控制

    matlab

    单片机设计 基于C语言的单片机红外遥控系统设计与实现的详细项目实例(含完整的硬件电路设计,程序设计、GUI设计和代码详解)

    内容概要:本文档详细介绍了一款基于C语言的单片机红外遥控系统的设计与实现。项目旨在通过单片机平台实现对家电设备的高效、稳定、低成本的红外遥控控制。系统设计涵盖了硬件电路设计、软件架构、信号处理、功耗管理、抗干扰设计等方面。文中详细介绍了各个功能模块的具体实现,包括系统初始化、红外信号接收与解码、控制逻辑、红外信号发射等。此外,文档还探讨了系统的可扩展性,提出了多项创新和技术改进的方向,如多设备控制、语音识别、无线网络控制、自学习功能等。 适合人群:具备一定单片机基础知识的研发人员,特别是对嵌入式系统设计、红外通信技术感兴趣的工程师。 使用场景及目标:①学习单片机与红外遥控技术的基础理论和实际应用;②掌握嵌入式系统设计的方法和技巧,特别是在信号处理、功耗优化等方面的实践经验;③为智能家居、家庭娱乐系统等领域的产品开发提供参考。 其他说明:文档不仅提供了详细的硬件电路设计和软件代码实现,还包括了GUI设计的要求和具体实现步骤。此外,文档还强调了系统的可扩展性和未来改进方向,如集成更多传感器、云平台与大数据分析、机器学习等先进技术,以提升系统的智能化水平。

    5G IPRAN基站业务组网及关键技术解析

    内容概要:本文详细介绍了5G IPRAN(IP Radio Access Network)基站业务组网的技术背景、关键技术和具体配置。主要内容涵盖IPRAN的基本概念及其在5G时代的必要性,新型IPRAN设备的功能改进和支持的新技术(如SR、FlexE等),以及具体的组网架构和技术细节,包括但不限于DCN自通、PW+L3VPN组网、FlexE配置、Telemetry技术、Segment Routing、EVPN实现方式、MPLS OAM等。此外,文章还深入探讨了IPRAN基站的流量走向、高可靠性和配置要点,特别是A设备、B设备和ER设备的具体配置步骤。 适合人群:具备一定网络工程基础的专业人士,尤其是从事5G网络建设和维护的技术人员。 使用场景及目标:帮助技术人员理解和实施5G IPRAN基站业务组网,确保网络架构的高效性和稳定性,满足5G网络大带宽、低延迟的要求。 其他说明:本文不仅提供了理论知识,还附带了大量的配置示例,便于读者在实践中应用。

    MATLAB/Simulink中永磁同步电机启动与运行模式切换的方案设计(I/F控制、滑模观测器控制)

    内容概要:本文详细介绍了如何利用MATLAB/Simulink实现永磁同步电机(PMSM)从启动到中高速运行的平滑切换。主要内容分为三个部分:首先是I/F控制用于启动阶段,确保电机平稳启动;其次是滑模观测器(SMO)和磁链观测器的应用,用于中高速运行时的状态估计和控制;最后是模式切换的设计,通过状态机和加权平均方法实现两种控制模式之间的无缝衔接。文中提供了具体的MATLAB代码片段和Simulink模块配置,强调了调试技巧和注意事项,如频率斜坡生成、电流补偿、滤波器应用以及速率限制等。 适合人群:对永磁同步电机控制有一定了解的研究人员和技术人员,特别是那些希望深入理解MATLAB/Simulink在电机控制系统中应用的人群。 使用场景及目标:适用于需要设计高效、稳定的PMSM控制系统的研究项目或工业应用。主要目标是掌握I/F控制、滑模观测器和模式切换的具体实现方法,提高系统的动态响应和平稳性。 其他说明:文章不仅提供理论指导,还分享了许多实用的调试经验和优化技巧,帮助读者更好地理解和解决实际工程中的问题。

    MATLAB模糊控制算法在驾驶员制动意图识别中的应用:模型与实验案例

    内容概要:本文详细介绍了如何利用MATLAB的Fuzzy工具箱实现驾驶员制动意图的识别。文中首先解释了模糊控制的基本概念及其在处理不确定性和模糊性方面的优势。随后展示了具体的MATLAB代码示例,包括创建模糊推理系统(FIS)、定义输入输出变量及其隶属函数、添加规则以及进行仿真测试。通过实际路测验证,模糊控制相比传统方法在识别精度和响应速度上有显著提高。此外,还讨论了参数调整技巧和常见问题解决方案。 适合人群:从事自动驾驶或智能辅助驾驶系统研究的技术人员,尤其是对模糊控制算法感兴趣的开发者。 使用场景及目标:适用于需要精确识别驾驶员制动意图的应用场合,如高级驾驶辅助系统(ADAS)的研发。主要目标是提高系统的智能化水平,增强行车安全性。 其他说明:文中提供的代码片段和实验数据有助于读者深入理解模糊控制的工作原理,并为实际项目提供参考。同时强调了模糊控制并非万能,需要结合具体应用场景不断优化调整。

Global site tag (gtag.js) - Google Analytics