java 运行服务异常,进入服务分析工具 arthas
线程分析工具。arthas。
解决问题:
找到繁忙的线程,找到关键的程序。找到程序的问题。解决掉。
参考文档:
在linux上安装arthas服务。
因为我们服务在编辑器开发完成后,都是需要到linux等环境下运行,所以,如果遇到问题,那么需要到环境上分析问题。
不想每次打开都指定arthas的路径,那么可以将他放在/usr/bin下。
找个目录安装,
mkdir -p /opt/arthas wget https://alibaba.github.io/arthas/arthas-boot.jar
新建 arthas.sh
1、如果监控本机java服务。
# vi /usr/bin/arthas.sh 增加如下内容 #!/bin/bash java -jar /opt/arthas/arthas-boot.jar
2、如果监控容器docker内的服务。
# vi /usr/bin/arthas.sh 增加如下内容 #!/bin/bash LINK_PATH=$(readlink $0) [ "x" = "x$LINK_PATH" ] && CURRENT_PATH=$(dirname $0) [ "x" != "x$LINK_PATH" ] && CURRENT_PATH=$(dirname $LINK_PATH) cd $CURRENT_PATH || exit 1 CURRENT_PATH=$(pwd) count=$(docker ps | wc -l) [ $count -le 0 ] && echo "no ccjr-system." && exit 0 declare -A idMap i=1 for line in $(docker ps | awk '{print $1"#"$2"#"$NF}'); do idMap[$i]=$line i=$(expr $i + 1) done for key in ${!idMap[*]}; do value=${idMap[$key]} t1=$(echo $value | awk -F '#' '{print$1}') t2=$(echo $value | awk -F '#' '{print$2}' | awk -F "/" '{print$NF}') t3=$(echo $value | awk -F '#' '{print$3}') echo "[ $key ] $t1 $t2 $t3" done read -p "id:" n value=${idMap[$n]} [ -z $value ] && exit 0 t1=$(echo $value | awk -F '#' '{print$1}') t2=$(echo $value | awk -F '#' '{print$2}') [ -z $t1 ] && exit 0 echo "------------------------" echo "[ $n ] $t1 $t2" echo "------------------------" docker exec -it $t1 /bin/sh -c "java -jar /opt/arthas/arthas-boot.jar"
也可以。。
1、先现在到本地,再复制。 wget https://alibaba.github.io/arthas/arthas-boot.jardocker exec -it ${containerId} /bin/bash docker cp /opt/arthas/arthas-boot.jar mygod:/opt/arthas/arthas
2、直接下载到容器中 docker exec -it ${containerId} /bin/bash -c "wget https://arthas.aliyun.com/arthas-boot.jar && java -jar arthas-boot.jar"
3、在服务器上,任意位置,直接运行arthas.sh就可以开启您的愉快监控寻找问题之旅了。
4、退出
# stop
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?