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

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

问题

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

查看问题

使用 top查看,或者HTOP

查看容器

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

docker ps

找到运行的java服务

进入到java服务容器里面

docker exec -it  xxxx  /bin/bash

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

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

1、死循环导致cpu飙高

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

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

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

我这边解决的方法

查看pid
查看进程下哪些线程占用了高的cpu
top -p 7 -H
将十进制pid转换为十六进制的pid

java服务查看日志

动态查看30行日志
jstack 7 | grep 23 -A 30
追加成日志
jstack 7    >>  bosCenterService.logs #后面名字自定义

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 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径

经验分享 程序员 微信小程序 职场和发展