面试官问:如何排除GC引起的CPU飙高?我脱口而出5个步骤
2020-11-20 12:13
841 查看
在工作中,当一个系统发生
OOM的时候,这种问题可能会让大家很烦恼困惑,因为故障排查起来是一个综合技术的考量。在平时工作中要增加自己的知识广度,多学习,多总结,多思考,多做笔记,这才是真正的王道。
尤其是在线上环境中,如何分析是哪个线程导致的CPU飙高的问题,通常大致有几个差不多固定的步骤。这个问题也是面试频率非常之高的问题之一,很多人也是靠回答这个问题而加薪。
常见套路步骤:
使用top命令
使用
top -H pid使用
prinf %x tid使用
jsack pid >pid.log查阅
less pid.log
下面就来说一下这几个步骤。
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
来查看垃圾回收的实时情况。
关于jstat的使用前参考前面的文章 工具。
推荐一篇很全的线上CPU飙高的解决文章
http://woaijava.cc/blog/201110153155
相关文章推荐
- 阿里云面试官:如果是MySQL引起的CPU消耗过大,你会如何优化?
- 图标设计:教你如何有效地使用5个步骤设计漂亮图标
- 穷人如何用5个简单的步骤玩scrum
- 如何迁移域控制器 FSMO 5个角色和GC
- 如何迁移域控制器 FSMO 5个角色和GC
- 被面试官疯狂追问:平时碰到系统CPU飙高和频繁GC,你会怎么排查?我太难了
- 如何迁移域控制器 FSMO 5个角色和GC
- 如何查找引起高CPU的SQL
- linux如何查看当前占用CPU或内存最多的5个进程
- JVM性能调优 - 常用步骤 - 查看CPU、GC、内存 、查看tomcat 进程、数据库连接数 、tomcat连接
- 图标设计:教你如何有效地使用5个步骤设计漂亮图标
- 如何迁移域控制器 FSMO 5个角色和GC
- 面试官:生产环境碰到系统CPU飙高和频繁GC,你要怎么排查?
- 图标设计:教你如何有效地使用5个步骤设计漂亮图标
- Linux 如何查看当前占用CPU或内存最多的5个进程
- 8-4 RFID系统二进制树形搜索算法是如何解决碰撞的?简述其实现步骤
- 常见的CPU访问引起的内存保护问题为什么只用event_122上报 - 1
- 如何指定进程运行的CPU
- 如何排除 Internet Explorer 中的脚本错误
- linux下如何查卡cpu的频率