Arthas诊断Java问题
一、基础工具
1. jstack:用于生成java虚拟机当前j时刻的线程快照,目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等都是导致线程长时间停顿的常见原因。
jstack [option] vmid
二、安装启动
1. 安装:下载arthas-boot.jar,然后使用java -jar arthas-boot.jar启动,同时需要输入诊断的应用进程ID;
2. windows启动(在arthas目录下执行):as.bat <pid>;
3. 界面访问地址:http://127.0.0.1:3658
4. Docker里使用Arthas工具:在Docker环境下会出现arthas无法使用,这个是因为一般应用使用的JRE,缺少工具类,所以应该安装JDK,比如:openjdk:8-jdk或者openjdk:8-jdk-alpine。
三、命令
1. thread:查看当前线程信息,用户找出CPU占用较高的线程;
A.展示当前最忙的前N个线程并打印堆栈:thread -n 10;
2. trace:显示方法内部调用路径,并输出方法路径上的每个节点上耗时;
A. 统计调用链路上的性能开销和追踪调用链路(查找耗时的方法,需要一步步往下追踪链路)
trace org.springframework.web.servlet.DispatcherServlet doDispatch
B. 根据调用耗时过滤数据(单位为毫秒)
trace org.springframework.web.servlet.DispatcherServlet doDispatch '#cost > 1000';
3. watch
4. ognl
A. 动态打印SQL日志,主要是更改日志级别为DEBUG,日志仍然在服务里存放日志位置地方看
查看日志级别:ognl '@org.slf4j.LoggerFactory@getLogger("com.ruhuanxingyun.mapper")'
日志级别改为DEBUG:ognl '@org.slf4j.LoggerFactory@getLogger("com.ruhuanxingyun.mapper").setLevel(@ch.qos.logback.classic.Level@DEBUG)'
可参考:Arthas官网文档
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗