Arthas
官方文档 Arthas
常用指令
Arthas最常用的监控指令就是dashboard,对于dashboard的使用说明,我们可以像使用Linux一下在dashboard命令后面追加一个–help。
- 默认参数都不加,每隔5s刷新一次面板。
- -i 指定刷新面板间隔。
- -n 指定刷新次数。
dashboard大抵范围3个板块:
- 线程信息版块,对应的列名分别是:id、线程名、所属线程组、优先级、线程运行状态、cpu使用率、延迟时间、运行时间、是否被打断。
- 内存使用版块,大体都是记录着各代内存和gc情况。
- 服务器运行参数版块,这一版块记录着程序当前运行服务器的内核版本信息、jdk版本等。
在Arthas中,如果我们希望退出dashboard直接按ctrl+c即可,如果我们希望退出当前Java程序的交互界面,输入exit即可。
定位CPU 100%问题
CPU 100%问题算是生产环境下最难排查的问题了,在没有Arthas之前,我们常规的排查思路大致为:
- 使用top确定是否为java进程。
- 如果是,则使用jps定位Java进程号。
- 找到最吃资源的线程号。
- 将线程号转为十六进制。
- 通过jstack导出日志并使用全局搜索十六进制线程号定位到问题代码段。
arthas排查步骤:
- 启动:
java -jar arthas-boot.jar
- . 选中我们的系统程序
- 输入:
dashboard -i 5000
- 找到CPU占用最高的 ID
- 输入:
thread xx
- 然后找到报出的java类方法,可以直接定位到行