容器cpu使用率持续100%的问题定位方法
512 次浏览
发表于 2020-05-28 09:53

1、问题现象:在容器管理上监控到受理中心容器cpu使用率持续大于100%

image.png

2、定位步骤:

1)ssh对应主机,行命令 docker ps -a |grep 端口,可以取到容器id。

2) 进入容器docker exec -it 容器id bash。

3)执行top命令,取耗cpu线ID。

top -p 1,持续观察进程cpu使用率,按shift + h 切换成线程cpu使用情况,持续观察可以获取到cpu使用率高的线程pidimage.png

4)用算器或者printf "%x\n" 制的pid 例如 printf "%x\n" 640

以上命令可以获取十六进制的javacore中的nid,注意十六进制用计算器获得的结果大写字母要转换成小写。

5) 获取javacore: jstack -l 1 >a1.log。

6)用vi命令在a1.log找第四步取到的十六nid ,即可定位耗cpu线程堆栈。

例如:

image.png

7)根据线程堆中指示的业务码进一步分析。

image.png

3、根据业务码发现产生了while死循的可能,一步分析和修改业务码。


如果您觉得不错,就打赏支持一下吧〜
已有 1 人进行打赏
  • NGINX官方账号
发表评论
  • 0学0

    行业级分享👍🏻

    2020-05-28 15:37
    0
    回复
发表者

陈友行

暂无个人介绍

  • 5

    文章

  • 1

    关注

  • 19

    粉丝

活动推荐
版权所有©F5 Networks,Inc.保留所有权利。京ICP备16013763号-5