Linux下Arthas(阿尔萨斯)的简单使用-接口调用慢排查

使用环境

k8s容器内运行了一个springboot服务,服务的启动方法是main()方法

下载并启动 arthas

curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar

选择应用 java 进程

在这里插入图片描述
就一个进程org.apache.catalina.startup.Bootstrap,输入编号1回车。Arthas 会 attach 到目标进程上,并输出日志:
在这里插入图片描述

使用thread命令查看所有进程

在这里插入图片描述

使用 trace 查看方法内部调用路径,并输出方法路径上的每个节点上耗时

先执行命令,再调用对应的方法

trace cc.eslink.bu.controller.pc.QueryMapController queryMapWaterDecline
trace cc.eslink.bu.service.impl.QueryMapServiceImpl queryMapWaterDecline
trace cc.eslink.bu.service.impl.QueryMapServiceImpl queryMap

在这里插入图片描述
最终定位到执行慢的代码

stop 关闭 Arthas 服务端

在这里插入图片描述

常用命令

jad (字节码文件反编译成源代码 )

在这里插入图片描述

# 1、反编译java.lang.String
jad java.lang.String
# 2、反编绎时只显示源代码(默认情况下,反编译结果里会带有ClassLoader信息)
jad --source-only demo.MathGame
# 3、反编译指定的函数
jad demo.MathGame main

mc (Memory Compiler/内存编译器 )

Memory Compiler/内存编译器编译,java文件生成.class文件。

# 1、在内存中编译Test.java为Test.class
mc /opt/Test.java
# 2、可以通过-d命令指定输出目录
mc -d /opt/test /root/Test.java

redefine(加载外部的.class文件,redefine到JVM里 )

常用来解决线上服务不停止,修改代码操作。

注:
1)、redefine后的原来的类不能恢复,redefine有可能失败(比如增加了新的field)。reset命令对redefine的类无效。如果想重置,需要redefine原始的字节码。redefine命令 jad / watch /trace/ monitor/tt 等命令会冲突。执行完redefine之后,如果再执行上面提到的命令,则会把redefine的字节码重置;
2)、不允许新增加 field/method;
3)、正在运行的函数,没有退出不能生效。

# 1、使用jad反编译 demo.MathGame 输出到 /opt/MathGame.java
jad --source-only demo.MathGame > /opt/MathGame.java
# 2、把上一步反编译的代码修改完成后,使用mc在内存中对新的代码进行编译
mc /opt/MathGame.java -d /opt
# 3、使用redefine命令加载新的字节码
redefine /opt/demo/MathGame.class

trace 查看方法调用耗时

参考链接

官方文档

https://arthas.aliyun.com/doc/vmtool.html

其它博客
https://blog.csdn.net/DevelopmentStack/article/details/117557817
https://github.com/alibaba/arthas/issues?q=label%3Auser-case

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值