Arthas
进行线上Java应用问题排查。参考文档:
环境部署
# 1.运行,因为有多个java版本,需要指定路径
cd /data/java/
/data/java/jdk-14.0.2/bin/java -jar arthas-boot.jar --target-ip 0.0.0.0
命令参考
1.docker运行 arthas
docker里出现arthas无法工作的问题,是因为应用没有安装 JDK ,而是安装了 JRE
# 1.docker 运行(官方使用,实际不行,docker容器没有wget 命令)
docker exec -it ${containerId} /bin/bash -c "wget https://arthas.aliyun.com/arthas-boot.jar && java -jar arthas-boot.jar"
# 2.使用curl 方式进行
docker exec -it bcd75 /bin/bash
curl https://arthas.aliyun.com/arthas-boot.jar --output arthas-boot.jar
java -jar arthas-boot.jar
dashboard
thread -all
2.仪表盘查看概要信息
dashboard
3.查看线程
- thread -b, 找出当前阻塞其他线程的线程
- thread –all, 显示所有匹配的线程
- thread -n 3 3个最忙的线程
- thread 49 显示线程id为49的堆栈信息
- thread --state WAITING 查看等待状态的线程
4.查看内存
- memory 查看内存信息
5.日志修改
# 1.查看指定名称日志
logger -n com.dls
# 2.修改日志级别
logger --name com.dls --level info
6.调优,性能、bug排查
# 1.查看类信息
sc -d com.dls.slots.gate.service.GateService
# 2.查看方法信息
sm -d com.dls.slots.gate.service.GateService init
# 3.查看类加载信息
classloader
# 4.监控方法执行次数和耗时
monitor -c 5 com.dls.slots.gate.tcp.user.UserTcpServerHandler channelRead
# 5.跟踪函数执行,统计耗时
trace com.dls.slots.gate.tcp.user.UserTcpServerHandler channelRead
# 6.方法调用栈
stack com.dls.slots.gate.tcp.user.UserTcpServerHandler channelRead
# 7. 查看方法返回值,参数,执行时间,是否异常等
tt -t com.dls.slots.gate.sturct.User sendToUser