docker容器中打印java堆栈日志,定位线上CPU高的问题

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里需有问题
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值