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


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/517872.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 便笺技巧专栏

文章目录一、 vi 专栏二、固定ip设置2.1. 自动获取改为静态2.2. IDADDR获取2.3. GATEWAY获取2.4. 重新网卡2.5. 重新连接三、主机名调整3.1. 临时有效主机名3.2. 永久有效主机名四、防火墙调整4.1. 临时关闭防火墙4.2. 开机不启动防火墙五、shell脚本5.1. shell格式5.2. shell执…

刚刚,Python内幕被爆出!网友:请收下我的膝盖!

2020 年 5 月全国招收程序员 312761 人。2020 年 5 月全国程序员平均工资 14542 元&#xff0c;工资中位数 12500 元&#xff0c;其中 95% 的人的工资介于 5250 元到 35000 元。请问你拖后腿了吗&#xff1f;作为一名老码农&#xff0c;这次请收下我的膝盖&#xff01;事情起因…

阿里99大促 | 模型识别背后的样本生成

背景 在上一篇文章详解阿里99大促活动页内容识别技术实现&#xff0c;我们介绍了在淘宝99大促中&#xff0c;我们使用了怎样的算法模型去识别并完成自动化测试的。 迫切解决的样本问题 淘宝大促有近百个模块、上千个页面&#xff0c;模块间具有相似性&#xff0c;并且模块内…

这6种编码方法,你掌握了几个?

阿里妹导读&#xff1a;Don Roberts 提出的一条重构准则&#xff1a;第一次做某件事时只管去做&#xff1b;第二次做类似的事时会产生反感&#xff0c;但无论如何还是可以去做&#xff1b;第三次再做类似的事时&#xff0c;你就应该重构。 编码也是如此&#xff0c;当多次编写…

扎根中国20年,F5“代码到用户”线上峰会盛大启幕

2020年5月20日&#xff0c;全球领先的多云应用服务厂商F5公司以线上峰会的形式开启了F5 2020 “代码到用户” 暨F5中国20周年纪念庆典&#xff0c;深入解读了F5“代码到用户” 的战略。F5全球首席执行官范仲林先生、F5全球首席科学家及首席技术官林耕先生、NGINX创始人Igor Sys…

Hadoop集群安装部署_伪分布式集群安装_01

文章目录一、配置基础环境1. 设置静态ip2. hostname3. firewalld4. ssh免密码登录5. JDK一、配置基础环境 1. 设置静态ip [rootbigdata01 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33BOOTPROTO"static" IPADDR192.168.92.100 GATEWAY192.168.92.2 DNS1192.…

Hadoop集群安装部署_伪分布式集群安装_02

文章目录一、解压安装1. 安装包上传2. 解压hadoop安装包二、修改Hadoop相关配置文件2.1. hadoop-env.sh2.2. core-site.xml2.3. hdfs-site.xml2.4. mapred-site.xml2.5. yarn-site.xml2.6. workers三、格式化与启动集群3.1. 格式化HDFS3.2. 启动伪分布集群3.3. 异常解决方案3.4…

在 520 这天,竟然有人把 Docker讲清楚了? | 原力计划

作者 | 夏目 "责编 | 王晓曼头图 | CSDN下载自东方IC出品 | CSDN博客简介1、了解Docker的前生LXCLXC为Linux Container的简写。可以提供轻量级的虚拟化&#xff0c;以便隔离进程和资源&#xff0c;而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C中的NameSp…

为什么它有典型FaaS能力,却是非典型FaaS架构?

阿里妹导读&#xff1a;FaaS—Function as a service&#xff0c;函数即服务。它是2014年由于亚马逊的AWS Lambda的兴起&#xff0c;而被大家广泛认知。FaaS能力是NBF中的一项非常重要的能力&#xff0c;NBF是一个非典型的FaaS架构&#xff0c;但是具备了典型的FaaS能力。文章将…

如何解决90%的问题?10位阿里大牛公布方法

世界在变&#xff0c;技术在变&#xff0c;需求在变。 唯一不变的是变化。 面对变化&#xff0c;技术人如何在不确定性的世界中寻找最优解&#xff1f; 查理芒格说&#xff1a;“掌握一定数量的思维模型&#xff0c;能解决这世上90%的问题。”与其在重复的“增、删、改、查”…

Hadoop集群安装部署_分布式集群安装_01

文章目录1. 分布式集群规划2. 数据清理3. 基础环境准备4. 配置ip映射5. 时间同步6. SSH免密码登录完善7. 免密登录验证1. 分布式集群规划 伪分布集群搞定了以后我们来看一下真正的分布式集群是什么样的 看一下这张图&#xff0c;图里面表示是三个节点&#xff0c;左边这一个是…

今天,Python信息量很大!

小白程序员Python自学之痛&#xff1a;第一周找学习资源&#xff0c;第二周入门到放弃&#xff0c;第三周怀疑自己。明明10元钱就能搞定的事情&#xff0c;为什么要反反复复折磨自己呢&#xff1f;为了让用户用更优惠的价格买到优质的课程&#xff0c;CSDN和老师反复争取&#…

闲鱼如何利用端计算提升推荐场景的ctr

背景 闲鱼作为一个电商场景的app&#xff0c;最丰富的部分就是作为商品宝贝浏览承载的feeds&#xff0c;比如首页下面的宝贝信息流&#xff0c;搜索结果页以及详情页下面的猜你喜欢&#xff0c;这些feeds场景都少不了推荐算法在背后的支撑。 传统的推荐算法是依托于云上沉淀的…

Hadoop集群安装部署_分布式集群安装_02

文章目录一、上传与 解压1. 上传安装包2. 解压hadoop安装包二、修改hadoop相关配置文件2.1. hadoop-env.sh2.2. core-site.xml2.3. hdfs-site.xml2.4. mapred-site.xml2.5. yarn-site.xml2.6. workers2.7. 修改启动脚本三、同步初始化3.1. 安装包同步3.2. 主节点格式化HDFS3.3.…

重要的节日那么多,要及时「缓存」你们的珍贵时光

作者 | 后端学长责编 | Carol出品 | 程序员 cxuan缓存概述在很久很久以前人类和洪水作斗争的过程中&#xff0c;水库发挥了至关重要的作用 : 在发洪水时可以蓄水&#xff0c;缓解洪水对下游的冲击&#xff1b;在干旱时可以把库存的水释放出来以供人们使用。这里的水库就起着缓存…

我和面试官之间关于操作系统的一场对弈 | 原力计划

作者 | Guide哥责编 | 伍杏玲出品 | CSDN博客大家好&#xff0c;我是 Guide 哥&#xff01;很多读者抱怨计算操作系统的知识点比较繁杂&#xff0c;自己也没有多少耐心去看&#xff0c;但是面试的时候又经常会遇到。所以&#xff0c;我带着我整理好的操作系统的常见问题来啦&am…

LaTex中参考文献引用

一、引用参考文献 这里我们使用的是BibTeX的引用格式&#xff0c;因此文件中应包括两个文件&#xff08;.bib-参考文献 和 .bst-文献格式&#xff09;。 有了这两个文件后&#xff0c;我们在bib文件中创建参考文献&#xff1a;&#xff08;注意&#xff0c;作者的名字是逗号前…

如何在Flutter上实现高性能的动态模板渲染

背景 最近小组在尝试使用一套阿里dinamicX的DSL&#xff0c;通过动态模板下发&#xff0c;实现Flutter端的动态化模板渲染&#xff1b;本来以为只是DSL到Widget的简单映射和数据绑定&#xff0c;但实际跑起来的效果出乎意料的差&#xff0c;列表卡顿严重&#xff0c;帧率丢失严…

稀疏数组(数据结构)

稀疏数组&#xff08;数据结构&#xff09; 需求&#xff1a;编写五子棋游戏中&#xff0c;有存盘和续上盘的功能 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 …