# 提升篇:通过Arthas快速定位线上问题
作者:Tom哥
公众号:微观技术
博客:https://offercome.cn (opens new window)
人生理念:知道的越多,不知道的越多,努力去学
做为一名经验丰富开发同学,大家一定经历过排查线上问题。
那争分夺秒的感觉一定让人非常紧张,每一秒都产生大量资损,直接影响到你年底的绩效考核。
掌握高超的线上问题排查技巧,真的非常重要。
随着 Java 生态的逐渐成熟,JDK 自带了很多命令行工具以及图形界面工具用于排查线上问题,下面是常用的一些命令,具体的命令语法,大家可以自行百度,这里就不展开了。
有时,我们也会遇到一些棘手的问题,比如这些:
- 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
- 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
- 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
- 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
- 是否有一个全局视角来查看系统的运行状况?
- 有什么办法可以监控到 JVM 的实时运行状态?
- 怎么快速定位应用的热点,生成火焰图?
- 怎样直接从 JVM 内查找某个类的实例?
如果问题能在本地复现,我们可以使用 debug 方式,这也是我们容易想到的一种解决思路。
但如果是连接的是远程测试机器或生产机器呢?运维同学一般不会给你开权限