首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
芋圆也有烦恼
北京航空航天大学 Java
发布于北京
关注
已关注
取消关注
.
@搬山道猿:
面试官:应用上线后Cpu使用率飙升如何排查?
上次面试官问了个问题:应用上线后Cpu使用率飙升如何排查?其实这是个很常见的问题,也非常简单,那既然如此我为什么还要写呢?因为上次回答的时候我忘记将线程PID转换成16进制的命令了。所以我决定再重温一遍这个问题,当然贴心的我还给大家准备好了测试代码,大家可以实际操作一下,这样下次就不会忘记了。模拟一个高CPU场景public class HighCpuTest { public static void main(String[] args) { List<HignCpu> cpus = new ArrayList<>(); Thread highCpuThread = new Thread(()->{ int i = 0; while (true){ HignCpu cpu = new HignCpu("Java日知录",i); cpus.add(cpu); System.out.println("high cpu size:" + cpus.size()); i ++; } }); highCpuThread.setName("HignCpu"); highCpuThread.start(); }}复制代码在main方法中开启了一个线程,无限构建HighCpu对象。@Data@AllArgsConstructorpublic class HignCpu { private String name; private int age;}复制代码准备好上面的代码,运行HighCpuTest,然后就可以开始一些列的操作来发现问题原因了。排查步骤第一步,使用 top 找到占用 CPU 最高的 Java 进程1. 监控cpu运行状,显示进程运行信息列表top -c2. 按CPU使用率排序,键入大写的PP复制代码第二步,用 top -Hp 命令查看占用 CPU 最高的线程上一步用 top命令找到了那个 Java 进程。那一个进程中有那么多线程,不可能所有线程都一直占着 CPU 不放,这一步要做的就是揪出这个罪魁祸首,当然有可能不止一个。执行top -Hp pid命令,pid 就是前面的 Java 进程,我这个例子中就是 16738 ,完整命令为:top -Hp 16738,然后键入P (大写p),线程按照CPU使用率排序执行之后的效果如下查到占用CPU最高的那个线程 PID 为 16756第三步,查看堆栈信息,定位对应代码通过printf命令将其转化成16进制,之所以需要转化为16进制,是因为堆栈里,线程id是用16进制表示的。(我当时就是忘记这个命令了~)[root@review-dev ~]# printf "%x\n" 167564174复制代码得到16进制的线程ID为4174。通过jstack命令查看堆栈信息jstack 16738 | grep '0x4174' -C10 --color复制代码如上图,找到了耗CPU高的线程对应的线程名称“HighCpu”,以及看到了该线程正在执行代码的堆栈。最后,根据堆栈里的信息,定位到对应死循环代码,搞定。小结cpu使用率飙升后如何排查这个问题不仅面试中经常会问,而且在实际工作中也非常有用,大家最好根据上述步骤实际操作一下,这样才能记得住记得牢。
点赞 93
评论 8
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
10-27 16:27
北京邮电大学 算法工程师
20251027华为线下面试面经
📍面试公司:华为🕐面试时间:9:20签到,随后一面;10:23二面;11:37三面。平均每面50分钟左右。💻面试岗位:AI岗机器学习❓面试问题:一面:自我介绍+项目拷打(方案设计、方法能否复用)+常见的聚类算法+LSTM、RNN的工作机制+手撕变体后的hot100-字符串解码等 二面:手撕等于目标值的最长连续子数组的长度+项目拷打+模型性能和预期不符怎么解决+模型微调等 三面:你面华为的优势和劣势在哪?怎么学习新知识,团队冲突解决,最自豪的事/最愤怒的事,三到五年的职业规划,薪资,base地;反问,干到业务主管要多少年,新员工培训等🙌面试感想:面试官都很好,很专业,很和善
查看18道真题和解析
点赞
评论
收藏
分享
10-31 10:36
重庆大学 研发工程师
别在误会低代码了,真正的低代码不仅仅是简单的拖拉拽和表单流程搭建
在和客户交流的时候,发现很多客户觉得低代码或者零代码的平台只能做一些简单的业务系统,其实这点 产品本身做得不够的,可能就是这样。但是JVS 其实远远不止仅仅做一些简单的表单和流程,还可以做得更多,它是软件开发级别的低代码开发平台。JVS内包含了多种能力配置,包括多个能力配置引擎,通过设计数据与配置引擎可以直接渲染生成功能,无需再生成代码(生成代码的模式大概率是一次性的低代码),包括:列表页的配置器,可以配置各种列表页,列表页上的数据字段、展示内容、交互操作表单的配置器,构建用户信息查询录入的操作界面逻辑的配置器,构建自动化处理的业务功能流程的配置器,实现人工审批的功能图表的配置器,配置用于嵌入...
点赞
评论
收藏
分享
10-20 11:11
辽宁大学 营销
不儿认真的吗春招??
我寻思我秋招还没结束呢春招先来了
StLeoX:
快进到一年三轮
点赞
评论
收藏
分享
10-13 13:49
南京大学 财务
不想谈方便面
饿魔:
笑死我了,你简直是个天才
点赞
评论
收藏
分享
今天 17:15
华东理工大学 Java
百度秋招Java后端一面面经
1、ThreadLocal 的实现原理? 2、ThreadLocalMap中的key和value是什么类型的引用? 3、为什么key 能被 GC 自动回收,但 value不能被 GC 自动回收? 4、value主要是什么? 5、垃圾回收器有哪些? 6、可达性分析法的GC Roost有哪些? 7、为什么选这些对象作为GC Root? 8、平时使用MySQL是怎么用的?(其实没太get到这个问题的点) 9、MySQL的存储引擎? 10、为什么用InnoDB做默认存储引擎? 11、事务隔离级别有哪些? 12、update b = b + 1 where b = 5 在可重复读隔离级别下,5个线程并发...
投递百度等公司10个岗位
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
1
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
造谣刑法老师媚男,反被老师法院起诉
8377
2
...
秋招小失败-后端小小劝退(大结局)
6871
3
...
9本秋招后端收获9+offer, 我做对了什么?
4530
4
...
你们说,人会一直倒霉吗?
3696
5
...
秋招能拿多个大厂offer的其实就两种人
2168
6
...
cvte体验实习
1454
7
...
好想被坚定地选择
1418
8
...
团子今年是不是普遍涨薪了?开水团变甜了?
1225
9
...
造谣老师媚男,不料炼丹炉炸了
1225
10
...
你有资格签华为的奋斗者协议吗?
1156
创作者周榜
更多
正在热议
更多
#
校招生月薪1W算什么水平
#
40027次浏览
222人参与
#
我和mentor的爱恨情仇
#
77346次浏览
427人参与
#
“vivo”个offer
#
40727次浏览
287人参与
#
如果上班像打游戏,你最想解锁什么技能
#
9432次浏览
75人参与
#
一人一个landing小技巧
#
124949次浏览
1451人参与
#
为了实习逃课值吗?
#
31285次浏览
286人参与
#
你见过哪些工贼行为
#
26505次浏览
134人参与
#
HR问:你期望的薪资是多少?如何回答
#
66818次浏览
649人参与
#
被同事甩锅了怎么办
#
23829次浏览
100人参与
#
你的秋招第一场笔试是哪家
#
258002次浏览
2024人参与
#
vivo工作体验
#
28846次浏览
124人参与
#
哪一瞬间觉得自己长大了
#
39165次浏览
494人参与
#
和mentor 1on1 都聊什么?
#
1726次浏览
20人参与
#
实习吐槽大会
#
386292次浏览
2156人参与
#
工作后明白的那些道理
#
22637次浏览
225人参与
#
我是面试官,请用一句话让我破防
#
28268次浏览
132人参与
#
中美关税战对我们有哪些影响
#
44389次浏览
372人参与
#
你想留在一线还是回老家?
#
62437次浏览
537人参与
#
华为保温
#
109147次浏览
415人参与
#
中美关系回暖,你会选择出海吗?
#
8108次浏览
120人参与
#
哪些行业值得去?
#
6405次浏览
52人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务