arthas 阿尔萨斯

这种命令行的东西首先得知道 如何使用帮助,帮助文档最先开始用的,应该是可以在网上找到的官方文档

文档一:https://alibaba.github.io/arthas/index.html ,然后这个文档只是给出了一些常用的例子,并没有详细的写出每一个参数,需要使用命令行帮助才能看到完整参数及其示例

文档二:命令行帮助,help 命令列出了当前版本可以使用的命令列表,在使用某一个命令时,不知道有哪些参数可以用时可以使用 <command> -h 查看示例及参数列表和每个参数的意思

文档三:百度,google ,官网 github issues https://github.com/alibaba/arthas/issues

下载和安装

curl -O https://alibaba.github.io/arthas/arthas-boot.jar
java -jar arthas-boot.jar

初次使用时的一些问题

[ERROR] Target process 116477 is not the process using port 3658, you will connect to an unexpected process.
[ERROR] 1. Try to restart arthas-boot, select process 90686, shutdown it first with running the 'stop' command.
[ERROR] 2. Or try to use different telnet port, for example: java -jar arthas-boot.jar --telnet-port 9998 --http-port -1

这个问题初用者必出,原因为 arthas 选择一个应用进行诊断时弄了一个 session,可以使用 arthas-client ,web arthas client 进行登录,这个提示告诉你要先关闭以前的 arthas-boot ,或者重新选择一个端口

你可以这么做,在 ~/.arthas/lib/3.1.7/arthas 下有一个 arthas-client.jar 使用 java -jararthas-client.jar 可以进入上次的 session ,shutdown 后就可以选择其它的进程进行诊断了,或者你可以继续诊断当前应用

docker 如何使用

官网已经有例子了,这样

docker exec -it arthas-demo /bin/sh -c "java -jar /opt/arthas/arthas-boot.jar"

常见使用示例

arthas 默认是通配符匹配,可以开启正则匹配

用到后面,需要了解表达式核心变量 https://alibaba.github.io/arthas/advice-class.html

查询类加载器,类和类的所有方法,类源码

classloader 用来查询类加载器,以树状结构展示类加载器 classloader -t

sc 用来查询类,全称为 search-class ,如要查所有的 controller ,一般取名是有规则的 sc *Controller* ,查询单个类时,加 -d 参数可以看到详细信息,一般用来 看这个类是哪个类加载器加载的

sm 用来查询类的方法,全称为 search-method ,如要查当前查到 Controller 的所有的接口,选择某一个 Controller sm xx.xx.xx.xxxController

jad 用来在线反编译代码,可以用来查看线上代码是否已经更新

查看接口出入参,并重新发起请求 tt

第一步,先监控方法 tt -t classFullName methodName ,发起请求后,会展示一个请求列表,第一列为requestId

第二步,另启一个 arthas-client,执行 tt -i <requestId> 可以看到请求入参和出参,使用 -x 参数可以增加展示深度,看到更详细的信息,例如:tt -i <requestId> -x 3

如果在调试,需要使用同样的参数重新发起请求,只需要执行 tt -i <requestId> -p 就可以重新发起调用

查询出慢方法 trace

trace classFullName methodName -n 3 '#cost > 10'
监控方法调用 3 次,并找出花费时长超过 10ms 的节点 注:trace 只会监控一层子调用

找到 applicationContext 获取 bean

比较通用一点的办法是监控 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter 类的 invokeHandlerMethod 方法,因为所有的请求都会经过这里,然后这个类有一个方法是获取 applicationContext ,可以这样做

tt -t org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter invokeHandlerMethod

然后随便发起一个请求,再使秀 ognl 表达式获取 applicationContext  对象
之后就可以调用方法了
tt -i 1000 -w 'target.getApplicationContext().getBean("groupMembersController").detail("1")'

上面只是调了一个字符串的参数,如果需要调用复杂参数的方法,就需要了解下 ognl 表达式了,可以使用 ognl 表达式来创建对象

查看 Jvm 参数并设置 vmoption

可能 Jdk 提供的工具也有这样的功能,但这个可以有网页客户端,使用 Jdk 提供的工具类需要在本机调用,可能由于公司用户权限的原因可能使用不了,那这玩意就有用了。

使用这个命令必须使用 Jvm 参数的全称,简称是不支持的,并且要求大小写完全匹配,后面跟一个参数用于显示值,两个用于设置值

可以在这个文档查找全称 https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html#BGBCIEFC

常见全称:

-Xms and -Xmx (or: -XX:InitialHeapSize and -XX:MaxHeapSize)
-Xss (or -XX:ThreadStackSize)

引入 issues 上的一张图来说明 arthas 的使用,可以当操作手册 ,图片较大,可以下载下来看,清晰点



我的博文大纲:https://blog.csdn.net/sanri1993/article/details/52201255

arthas 使用指导的更多相关文章

  1. 新手入门指导:Vue 2.0 的建议学习顺序

    起步 1. 扎实的 JavaScript / HTML / CSS 基本功.这是前置条件. 2. 通读官方教程 (guide) 的基础篇.不要用任何构建工具,就只用最简单的 <script> ...

  2. Beennan的内嵌汇编指导(译)Brennan's Guide to Inline Assembly

    注:写在前面,这是一篇翻译文章,本人的英文水平很有限,但内嵌汇编是学习操作系统不可少的知识,本人也常去查看这方面的内容,本文是在做mit的jos实验中的一篇关于内嵌汇编的介绍.关于常用的内嵌汇编(AT ...

  3. Atitit 软件开发中 瓦哈比派的核心含义以及修行方法以及对我们生活与工作中的指导意义

    Atitit 软件开发中 瓦哈比派的核心含义以及修行方法以及对我们生活与工作中的指导意义 首先我们指明,任何一种行动以及教派修行方法都有他的多元化,只看到某一方面,就不能很好的评估利弊,适不适合自己使 ...

  4. SQL Server 解读【已分区索引的特殊指导原则】(3) - 非聚集索引分区

    一.前言 在MSDN上看到一篇关于SQL Server 表分区的文档:已分区索引的特殊指导原则,如果你对表分区没有实战经验的话是比较难理解文档里面描述的意思.这里我就里面的一些概念进行讲解,方便大家的 ...

  5. SQL Server 解读【已分区索引的特殊指导原则】(1)- 索引对齐

    一.前言 在MSDN上看到一篇关于SQL Server 表分区的文档:已分区索引的特殊指导原则,如果你对表分区没有实战经验的话是比较难理解文档里面描述的意思.这里我就里面的一些概念进行讲解,方便大家的 ...

  6. SQL Server 解读【已分区索引的特殊指导原则】(2)- 唯一索引分区

    一.前言 在MSDN上看到一篇关于SQL Server 表分区的文档:已分区索引的特殊指导原则,如果你对表分区没有实战经验的话是比较难理解文档里面描述的意思.这里我就里面的一些概念进行讲解,方便大家的 ...

  7. Hive Tutorial(上)(Hive 入门指导)

    用户指导 Hive 指导 Hive指导 概念 Hive是什么 Hive不是什么 获得和开始 数据单元 类型系统 内置操作符和方法 语言性能 用法和例子(在<下>里面) 概念 Hive是什么 ...

  8. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  9. 《Java程序设计与数据结构教程(第二版)》学习指导

    <Java程序设计与数据结构教程(第二版)>学习指导 欢迎关注"rocedu"微信公众号(手机上长按二维码) 做中教,做中学,实践中共同进步! 原文地址:http:// ...

随机推荐

  1. ImportError: DLL load failed: 找不到指定的模块。 TensorFlow 1.13

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/zhenlingcn/article/details/88647288问题描述 问题环境TensorF ...

  2. [转]基于VS Code快速搭建Java项目

    有时候随手想写一点Java测试代码,以控制台程序为主,还会用到一些其它框架,并基于Maven构建. 1.Java Extension Pack一定要安装. 2.VS Code打开一个指定目录,创建相应 ...

  3. HDU 1542"Atlantis"(线段树+扫描线求矩形面积并)

    传送门 •题意 给你 n 矩形,每个矩形给出你 $(x_1,y_1),(x_2,y_2)$ 分别表示这个矩形的左下角和右上角坐标: 让你求这 n 个矩形并的面积: 其中 $x \leq 10^{5} ...

  4. 漏洞扫描工具AWVS介绍及安装教程

    PS:webug靶场全都通关了,你也就是个合格的新手了. 上次我们在通关webug靶场第三关的时候,提到一个漏洞扫描工具叫做AWVS.这次我们介绍一下它. 1 AWVS漏洞扫描工具 Acunetix ...

  5. 用Xshell连接谷歌云

    谷歌云服务器,默认用浏览器进行SSH链接,而且也不告知密码.以Centos为例,先使用浏览器连接 1,给root修改密码 1 sudo passwd root 2,编辑ssh配置文件 sudo nan ...

  6. idea启用列模式的方式小结

    (1)alt+鼠标左键----实现的是几个连续列要向上或者向下拉,能够同时操作多行数据. (2)Shift+alt+鼠标左键----可以实现点选跨行的列模式同时操作,而且不通行可以点选不通列,进行跨行 ...

  7. HBuilder如何与真机连接

    之前因为前端这边要做测试, 同时兼容ios和安卓方面. 但是因为一直苦恼无法仿真机连接测试,从而每次测试提出来一次,修改一次. 为了解决这个弊端,所以自己在这里分享一下连接的方法: 一:Android ...

  8. 2019-2-11-WPF-列表自动换行

    title author date CreateTime categories WPF 列表自动换行 lindexi 2019-02-11 08:55:31 +0800 2019-02-11 08:5 ...

  9. Nutch网页抓取速度优化

    Nutch网页抓取速度优化 Here are the things that could potentially slow down fetching 1) DNS setup 2) The numb ...

  10. 初识Contiv

    Contiv是一个用于跨虚拟机.裸机.公有云或私有云的异构容器部署的开源容器网络架构.作为业界最强大的容器网络架构,Contiv具有2层.3层.overlay和ACI模式,能够与思科基础设施进行本地集 ...