jar服务导致cpu飙升问题-带解决方法

jar服务导致cpu飙升问题-解决

问题

我们服务器是8核cpu,64G内存按照正常道理,跑几个jar包服务不会造成 cpu飙升300%,

查看问题

使用 top查看,或者HTOP

image-20220810135839101

image-20220810135947555

查看容器

我们是容器里面跑的jar包服务

docker ps

找到运行的java服务
image-20220810140257014

进入到java服务容器里面

docker exec -it  xxxx  /bin/bash

进入到容器里面使用top命令查看
image-20220810140518543

java服务堆栈日志查看-jstack 命令

1、死循环导致cpu飙高

死循环的例子:https://blog.csdn.net/goldenfish1919/article/details/8755378

步骤:查找进程-》查找线程-》分析threadDump日志-》找出问题代码

生成进程下所有线程的栈日志
 jstack 1721 > 1712.txt
查看进程下哪些线程占用了高的cpu
 top -p 1712 -H
将十进制pid转换为十六进制的pid
printf  %x 8247
网上在线转换十六进制

image-20220810141248349

我这边解决的方法

查看pid

image-20220810141459864

查看进程下哪些线程占用了高的cpu
top -p 7 -H

image-20220810141825364

将十进制pid转换为十六进制的pid

image-20220810141928615

java服务查看日志

动态查看30行日志
jstack 7 | grep 23 -A 30

image-20220810142409432

追加成日志
jstack 7    >>  bosCenterService.logs #后面名字自定义

我这边的处理,我是运维改不动他们的代码,我把对应的java服务日志,以上截图给到开发人员,然后把容器里面的java日志,拷贝到宿主机,给到开发,最后由开发处理

docker容器里面拷文件到宿主机

1、从容器里面拷文件到宿主机?
 docker cp testtomcat:/usr/local/tomcat/webapps/test/js/test.js /opt

  
  docker cp 容器名:要拷贝的文件在容器里面的路径       要拷贝到宿主机的相应路径 
2、从宿主机拷文件到容器里面
 docker cp /opt/test.js testtomcat:/usr/local/tomcat/webapps/test/js
 
 docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径

l
docker cp /opt/test.js testtomcat:/usr/local/tomcat/webapps/test/js

docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径


猜你喜欢

转载自blog.csdn.net/tianmingqing0806/article/details/126266873