Docker进入日志查看Jstack日志

本文介绍了如何在Docker容器中通过`docker exec`、`top`、`find`、`jstack`等命令定位Java应用的高CPU占用问题。首先,进入容器并找到Java进程的PID,然后使用`jstack`生成堆栈日志,接着分析日志找出占用CPU较高的线程(如PID为213对应的16进制d5),最终在日志中搜索相关线索,定位到问题方法getDataDetail,从而完成故障排查。
摘要由CSDN通过智能技术生成

1:进入容器, docker exec -it 容器名 /bin/bash

2: top 查看 pid, 如图所标为8

在这里插入图片描述

 

3: find / -name jstack , 查看一下自己容器的java目录在哪个位置

在这里插入图片描述 

4:/usr/lib/jvm/java-8-openjdk-amd64/bin/jstack -l 8 > /opt/busuac.jstack.log
把堆栈日志打到opt目录下

5:日志到手,当然就可以放到copy到宿主机上去,然后再下载到桌面上慢慢分析了,我这里拷贝到了宿主机的opt目录上
到宿主机上打 docker cp pre_dcserver_1:/opt/busuac.jstack.log /opt

6:top -Hp pid 查看线程占用情况

在这里插入图片描述

7:发现pid 213的战用CPU挺高的, 把PID换算成16进程,如 213 换算出16进制是 d5
printf “%x\n” 213

8: 去日志里搜索0xd5的相关日志去排查原因, 最后定位到是这个方法getDataDetail里需有问题

收工! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值