> 健康
如何排查cpu占用过高的内存(怎么检查电脑cpu占用率)
导语:如何排查CPU占用过高?
每次面试都会面试几个线上环境问题?第一个问题线上CPU飙高,如何排查?第二个问题是内存溢出,进程死亡如何排查?
今天先说下CPU飙高,如何排查?
第一步:先用top命令,找到cpu占用最高的进程 PID
第二步:再用ps -mp pid -o THREAD,tid,time 查询pid进程中,哪个线程的cpu占用率高 记住TID
第三步:jstack 29099 >> xxx.log 打印出29099该进程下线程日志
第四步:排查日志文件
一套流程下来基本可以解决cpu飙高的问题,那么出现cpu飙高的原因有哪些?
1.代码中写死循环时,一直占用cpu,
2.在循环中不停的创建对象,也会导致GC频繁 —通过下图,不让死循环,频繁创建对象
3.System.currentTimeMillis() 采用这种方式去做计时,大概占用了10-20%cpu,因为不停地调用
除了CPU飙高的问题还有一种问题是由第二个原因,引起的。那就是内存溢出,如果内存溢出怎么排查。注意,内存溢出之后系统可能会宕机哦,如果宕机了改怎么排查那?
本文内容由小舻整理编辑!