Arthas 是阿里巴巴开源的 Java 诊断工具,它主要用来对 Java 应用的运行时信息进行监控和跟踪。trace 命令是 Arthas 中非常强大的一个功能,它可以追踪方法的内部调用路径,并输出方法的调用树,同时展示每个方法的调用耗时,非常适用于定位复杂的性能问题。

trace 命令的基本用法

trace <类名> <方法名> [条件表达式]
  • <类名>:需要追踪的类名,必须是全限定名。
  • <方法名>:需要追踪的方法名。
  • [条件表达式]:可选参数,用于过滤条件,只有满足条件的调用才会被追踪。

示例

假设我们有一个名为com.example.demo.service.UserService的类,其中有一个createUser的方法,我们想要追踪这个方法的内部调用路径。

trace com.example.demo.service.UserService createUser

执行上面的命令后,每次UserServicecreateUser方法被调用时,Arthas 都会输出该方法的调用路径和每个调用的耗时。

条件表达式

可以使用条件表达式来进一步过滤追踪的方法调用。例如,只追踪执行时间超过 100 毫秒的方法调用:

trace com.example.demo.service.UserService createUser '#cost > 100'

其中,#cost 是 Arthas 内置的一个变量,表示方法的执行时间(单位为毫秒)。

trace 命令的高级用法

Arthas 的trace命令还支持很多高级特性,包括但不限于:

  • --skipJDKMethod:跳过 JDK 自身的方法调用。
  • -E:开启正则表达式匹配类名和方法名。
  • -n <次数>:限制输出的调用树数量。

注意事项

  • 在使用trace命令时,需要确保目标类已经被加载,否则无法追踪。
  • trace命令会增加目标应用的运行负担,尤其是在高并发场景下,因此请在非生产环境或低峰时段使用。
  • 追踪的结果可能会非常长,尤其是在调用链复杂的情况下,因此需要耐心等待输出结果。

Arthas 的trace命令是一种强大的动态追踪工具,通过它可以有效地帮助开发者理解应用的运行情况,定位性能瓶颈。在实际使用中,建议结合dashboardthread等其他命令一起使用,以获得更全面的诊断信息。arthas的trace命令

Logo

2万人民币佣金等你来拿,中德社区发起者X.Lab,联合德国优秀企业对接开发项目,领取项目得佣金!!!

更多推荐