一:项目场景cpu100%排查
1、 docker 部署openjdk项目cpu100%描述
解决方案:
1、查看docker的cpu占用率:top 或者docker stats
2、进入cpu占用高的docker容器:docker exec -it 容器编号 /bin/bash
3、查看容器中具体进程cpu占用率,执行top,(如top命令无法使用,执行:export TERM=dumb ,然后在执行:top)
4、查看进程中线程cpu占用率:top -H -p 进程号
4.1 容器限制问题描述: 某些容器环境可能对系统工具(如 top)的使用有一定限制。
解决方法:
确保容器镜像中包含必要的系统工具,并且没有因精简镜像而缺少相关功能。
如果使用的是极简基础镜像(如 alpine),可以考虑安装 procps 包,它包含了 top 等实用工具。
apk add procps
5、将异常线程号转化为16进制: printf “%x\n” 线程号
6、查看线程异常的日志信息:jstack 进程号|grep 16进制异常线程号 -A90
7、jstack 6 | grep 6 -A90 >test17.log 输出日志
8、docker cp 容器名或者id:要拷贝的文件路径 宿主机路径:docker cp 12f3e3da37b9:/liming/test17.log /root
2、 以jar 配置的jdk的方式部署
解决方案:
[root@localhost yb]# docker exec -it d6679fc25a52 /bin/sh
find / -name jps
/usr/lib/jvm/java-1.8-openjdk/bin/jps
cd /usr/lib/jvm/java-1.8-openjdk/bin
/usr/lib/jvm/java-1.8-openjdk/bin # ./jps
18256 Jps
1 jar
./jstack 1