# 提升篇:通过Arthas快速定位线上问题

作者:Tom哥
公众号:微观技术
博客:https://offercome.cn (opens new window)
人生理念:知道的越多,不知道的越多,努力去学

做为一名经验丰富开发同学,大家一定经历过排查线上问题。

那争分夺秒的感觉一定让人非常紧张,每一秒都产生大量资损,直接影响到你年底的绩效考核。

掌握高超的线上问题排查技巧,真的非常重要。

随着 Java 生态的逐渐成熟,JDK 自带了很多命令行工具以及图形界面工具用于排查线上问题,下面是常用的一些命令,具体的命令语法,大家可以自行百度,这里就不展开了。

有时,我们也会遇到一些棘手的问题,比如这些:

  • 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
  • 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
  • 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
  • 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
  • 是否有一个全局视角来查看系统的运行状况?
  • 有什么办法可以监控到 JVM 的实时运行状态?
  • 怎么快速定位应用的热点,生成火焰图?
  • 怎样直接从 JVM 内查找某个类的实例?

如果问题能在本地复现,我们可以使用 debug 方式,这也是我们容易想到的一种解决思路。

但如果是连接的是远程测试机器或生产机器呢?运维同学一般不会给你开权限

上次更新: 2023/3/4