如何排查CPU占用过高?

每次面试都会面试几个线上环境问题?第一个问题线上CPU飙高,如何排查?第二个问题是内存溢出,进程死亡如何排查?

如何排查CPU占用过高?

今天先说下CPU飙高,如何排查?

第一步:先用top命令,找到cpu占用最高的进程 PID

如何排查CPU占用过高?


第二步:再用ps -mp pid -o THREAD,tid,time 查询pid进程中,哪个线程的cpu占用率高 记住TID


如何排查CPU占用过高?

第三步:jstack 29099 >> xxx.log 打印出29099该进程下线程日志

第四步:排查日志文件


一套流程下来基本可以解决cpu飙高的问题,那么出现cpu飙高的原因有哪些?

1.代码中写死循环时,一直占用cpu,

2.在循环中不停的创建对象,也会导致GC频繁 —通过下图,不让死循环,频繁创建对象

3.System.currentTimeMillis() 采用这种方式去做计时,大概占用了10-20%cpu,因为不停地调用

如何排查CPU占用过高?

除了CPU飙高的问题还有一种问题是由第二个原因,引起的。那就是内存溢出,如果内存溢出怎么排查。注意,内存溢出之后系统可能会宕机哦,如果宕机了改怎么排查那?




展开阅读全文

页面更新:2024-06-21

标签:都会   可能会   下图   线程   频繁   进程   命令   流程   对象   内存   原因   代码   方式   文件   数码

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top