1、top命令查看cpu占用最高程序 top 取得cpu占用最高的PID: 27791 2、判断java程序是直接运行在宿主机还是在容器中 方式一 cgroup cat /proc//cgroup 如果输出中包含有类似 /Docker/
top
取得cpu占用最高的PID: 27791
cat /proc//cgroup
如果输出中包含有类似 /Docker/
的字符串,就表示该进程在 Docker 容器中。
lsns命令查看程序的命名空间 ,如果显示的命名空间信息中有 ipc
, mnt
, net
, pid
, user
, uts
,那么该 PID 很可能在一个 Docker 容器中。
lsns -p PID
jps命令查看当前在服务器执行的java程序
jps
a、占用CPU最高的PID在jps的列表里,java进程可能运行在服务器,可直接执行jstack PID
b、占用CPU最高的PID不在jps列表里,java进程可能运行在容器中。
jstack命令查看线程、堆栈情况
jstack PID
(1)宿主机上直接jstack
#1、查看java进程在容器内的PIDdocker exec -it $containerid /bin/ps x#2、获取容器内JAVA_HOME路径docker inspect --fORMat '{{ range .Config.Env }}{{ if eq (index (split . "=") 0) "JAVA_HOME" }}{{ index (split . "=") 1 }}{{ end }}{{ end }}' $containerid#说明:docker inspect --format '{{.Config.Env}}' $containerid 是获取容器内的环境变量,如果没配环境变量需要到容器里查看,可用 which java 命令#3、执行jstackdocker exec -it $containerid $JAVA_HOME/bin/jstack $pid
(2)进入到容器执行jstack
定位docker容器。根据lsns -p PID获取到的信息(jar包名称可定位项目)定位到docker容器,需人工判断
lsns -p PIDdocker ps | grep 容器相关信息(名称、端口、容器ID等)
进入到docker容器
docker exec -it 容器ID /bin/bash#如果/bin/bash不存在,可使用/bin/sh
容器内查看进程ID,ps、jps、top命令都可以
执行jstack PID
来源地址:https://blog.csdn.net/weixin_42758672/article/details/132213741
--结束END--
本文标题: java 程序cpu占用过高排查
本文链接: https://www.lsjlt.com/news/413092.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-04-01
2024-04-03
2024-04-03
2024-01-21
2024-01-21
2024-01-21
2024-01-21
2023-12-23
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
一口价域名售卖能注册吗?域名是网站的标识,简短且易于记忆,为在线用户提供了访问我们网站的简单路径。一口价是在域名交易中一种常见的模式,而这种通常是针对已经被注册的域名转售给其他人的一种方式。
一口价域名买卖的过程通常包括以下几个步骤:
1.寻找:买家需要在域名售卖平台上找到心仪的一口价域名。平台通常会为每个可售的域名提供详细的描述,包括价格、年龄、流
443px" 443px) https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294.jpg https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294-768x413.jpg 域名售卖 域名一口价售卖 游戏音频 赋值/切片 框架优势 评估指南 项目规模
0