Java方法耗时诊断-Arthas

1.背景

  • 某个业务方调用自己工程的rpc,由于本工程内的rpc耗时过长,导致调用rpc熔断(invoke rpc timeout)。

2.问题排查

2.1 事先准备

  • 确保线上和预发环境代码一致
  • 相关机器安装了Arthas,该诊断操作不建议在生产环境使用,可离线排查相关耗时。

2.2 耗时分析

  • 1.启动Arthas
$java -jar arthas-boot.jar
  • 2.选定指定PID
    • 选定相关java进程的PID前面的行号,输入回车即
  • 3.指定相关耗时方法
    • Arthas可使用Trace命令,并且配合相关option。如下图1和图2:

$ trace -E class1 method1
  • 4.耗时方法
    • 从下图,可以看出我们这个方法存在两个操作的方法调用,分别是400ms+和500ms+。(ps:如果希望打印完整的链路调用时长,可以在trace后面指定更具体的class|method)。
  • 5.刨根问底
    • 通过刨根问底,发现这个两个耗时的方法底层的sql并为走到索引,导致整个查询均为全表扫(数据量100W+),所以相当耗时,通过对相关慢sql优化(索引优化等手段),耗时从原先500ms下降为3ms。

3.总结

  • 1.Arthas作为阿里的诊断神器,在日常问题排查中可以作为首选,了解常用的命令有助于解决问题。
  • 2.针对Mysql的学习和优化,建议可以学习下阿里丁奇《MySQL45讲》(ps:自行百度哈~)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值