首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
05-24 17:20
蓝禾技术_初级开发工程师(准入职员工)
蓝禾科技内推蓝禾科技内推
面经:蓝禾的流程推得很快,基本上投完两天就接到了hr的初试电话,直接进行了初试。初试全程大概三十分钟,hr小哥态度很和善。主要问了实践经历获奖的情况最有成就感的事情对电商运营的理解选择公司的标准等,都是比较常规的问题。然后hr介绍了公司的基本情况,培养体系以及电商运营的主要工作内容,说了前期会轮岗,时间弹性较大等,我表示了可以接受。初试完在电话里就约了第二天业务主管二面。二面是视频面,全程大概四十五分钟,态度也很友善,面试过程还是很愉快的~先是自我介绍什么时候决定工作为什么选择电商运营选择这个行业是想达成什么目标对于电商运营的理解职业规划最有成就感的事情遇到的比较困难的经历周围人对我的评价(优...
点赞
评论
收藏
分享
05-28 17:55
C++
C++不知道学什么?C++学到什么程度可以找到工作?
一般来说想要成为C++开发工程师,不仅需要不断学习C++技术,同时还需要做好面试工作。那么C++编程需要学到什么程度才能面试工作呢?C++编程学到什么程度可以面试工作?简单说,如果仅仅学C/C++本身的话,学到什么程度你都找不到工作。学习掌握某种编程语言的语法只是一个基础,一个起点。因为语言只是一种工具,学会语法特性仅仅是知道这种工具长什么样子、能拧能钻能铣能刨,如此而已。想要找到工作,你需要能够使用这件工具创造价值——你不能仅仅知道钢锉能挫铁,还要学会看图纸、会在给你的料子上合理规划、挫出符合图纸要求的合格元件来。废话不多说,今天给大家分享一个C++一站式就业知识库,解决大家C++不知道学什...
牛客创作赏金赛
点赞
评论
收藏
分享
05-23 09:01
湖南生物机电职业技术学院 运营
谁能懂!
当然的心情真的就是起起伏伏,她告诉我是点错了,有人信吗?反正我是不信也不晓得为啥突然变卦
点赞
评论
收藏
分享
05-26 23:05
IntelliJ IDEA 中有什么让你相见恨晚的技巧?
一、条件断点循环中经常用到这个技巧,比如:遍历1个大List的过程中,想让断点停在某个特定值。参考上图,在断点的位置,右击断点旁边的小红点,会出来一个界面,在Condition这里填入断点条件即可,这样调试时,就会自动停在i=10的位置二、回到"上一步"该技巧最适合特别复杂的方法套方法的场景,好不容易跑起来,一不小心手一抖,断点过去了,想回过头看看刚才的变量值,如果不知道该技巧,只能再跑一遍。参考上图,method1方法调用method2,当前断点的位置j=100,点击上图红色箭头位置的Drop Frame图标后,时间穿越了回到了method1刚开始调用的时候,变量i变成了...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
1
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
这次是真的告别了!
1.1W
2
...
极限春招小结
1.1W
字节暑期补捞
热聊中
3
...
上午拍毕业照,下午拍结婚照!牛友祝福我们吧!
1.0W
4
...
本科四年,我决定在即将毕业时转行
9339
5
...
28届学院本女生走java中~
8071
6
...
亲爱的公司,你好!
7251
7
...
找工作找到厌倦了,晒一下毕业照吧!
7221
8
...
极限春招一个月总结
5933
9
...
以为走散了,命运却又把我们安排到一起
5328
10
...
毕业以后还有纯爱吗?
5268
创作者周榜
更多
正在热议
更多
#
写给毕业5年后的自己
#
4167次浏览
95人参与
#
毕业季等于分手季吗
#
14402次浏览
167人参与
#
华泰证券Fintech星战营
#
168347次浏览
191人参与
#
职场捅娄子大赛
#
319264次浏览
3263人参与
#
好好告别我的学生时代
#
43209次浏览
832人参与
#
华为求职进展汇总
#
4645216次浏览
28246人参与
#
海信求职进展汇总
#
65015次浏览
359人参与
#
机械制造岗投递时间线
#
22259次浏览
341人参与
#
晒一下我的毕业照
#
32665次浏览
358人参与
#
如何缓解求职过程中的焦虑?
#
7464次浏览
97人参与
#
如果今天是你的last day,你会怎么度过?
#
22730次浏览
197人参与
#
HR问:你期望的薪资是多少?如何回答
#
40073次浏览
525人参与
#
当下环境,你会继续卷互联网,还是看其他行业机会
#
108273次浏览
782人参与
#
晒晒我司的端午福利
#
14858次浏览
99人参与
#
记录实习开销
#
26712次浏览
195人参与
#
如果重来一次,你还会学计算机吗
#
46871次浏览
417人参与
#
我想象的实习vs现实的实习
#
280325次浏览
2214人参与
#
上班苦还是上学苦呢?
#
222879次浏览
1329人参与
#
工作两年想退休了
#
119932次浏览
1120人参与
#
视觉/交互/设计百问百答
#
43211次浏览
427人参与
#
实习生如何通过转正
#
84977次浏览
1326人参与
牛客网
牛客企业服务