ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

排除GC引起的CPU飙高

2021-01-06 06:01:05  阅读:149  来源: 互联网

标签:top pid 飙高 线程 使用 tid GC CPU


在工作中,当一个系统发生OOM的时候,这种问题可能会让大家很烦恼困惑,因为故障排查起来是一个综合技术的考量。在平时工作中要增加自己的知识广度,多学习,多总结,多思考,多做笔记,这才是真正的王道。

尤其是在线上环境中,如何分析是哪个线程导致的CPU飙高的问题,通常大致有几个差不多固定的步骤。这个问题也是面试频率非常之高的问题之一。

常见套路步骤:

下面就来说一下这几个步骤。

top

我们可以使用top命令来查找对应使用CPU最多的进程,找到后,先记录下对应的pid(后面要用到)。

再使用Shift+P这两个快捷键可以按CPU的使用率进行排序。

top-H pid

再次使用top名,但是这次增加一个参数-H,可以查看上面找出来的pid进程中对应的线程tid,记住这时候的线程tid得记住

printf

但是此时的tid是十进制的,我们需要把这个tid转成16进制。然后使用

printf %x tid

stack

使用jstack工具把线程信息输出到对应的日志文件中,后面使用这个日志文件内容进行分析。

jstack pid >pid.log

less

上面已经生成日志文件了,这时候可以使用less命令来查找上面已经转换好的16进制的线程tid。

less pid.log

其它

另外还可以使用

jstat -gcutil pid 1000 10

来查看垃圾回收的实时情况。

标签:top,pid,飙高,线程,使用,tid,GC,CPU
来源: https://www.cnblogs.com/fengyangcai/p/14238909.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有