首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
12-27 22:49
门头沟学院 Java
招银云创、东软offer来时路
点赞
评论
收藏
分享
12-25 17:28
西安电子科技大学 Java
程序员|这个圣诞节,别等对象,给你看个惊喜!
(对着刚布置好的圣诞树发了会儿呆,敲下这行字)嘿,是我。刚被我妹“友好提醒”:“哥,平安夜你……不会又要对着电脑过吧?”那一瞬间,我CPU过载了。圣诞?它对我们这群人来说,好像就是:地铁里循环播放的 Jingle Bells BGM(还关不掉)。产品经理突然仁慈地说“今晚不加班”(但需求照旧)。以及,一个写代码显得不合时宜,不写代码又浑身难受的终极矛盾。直到我盯着闪烁的光标,顿悟了:圣诞节,本质上不就是一场大型的 “人类系统年终联欢暨依赖关系重构大会” 吗?有仪式感(装饰),有数据交换(礼物),还有间歇性异常(甜蜜的负担)。想通这点,我立刻在命令行里建了个新项目:“圣诞极客夜:非异步阻塞式快...
牛客在线求职答疑中心
点赞
评论
收藏
分享
12-27 19:23
陕西科技大学 golang
这什么情况?
这是什么情况
点赞
评论
收藏
分享
11-10 11:10
湖南大学 安卓
“您已拒绝向对方发送简历”
有些企业问了简历我就给,发了简历就被挂,秒挂……谁不想翻身做地主啊你问我要简历我就要给吗已读不回高冷且拒绝直接倒反天罡
不知道怎么取名字_:
你这是翻身做主把家还啊
简历无回复,你会继续海投...
点赞
评论
收藏
分享
昨天 11:25
阿里巴巴_算法工程师(实习员工)
实习被“放养”零产出,该及时止损还是继续苟着?
“实习没人带”是每届实习生的高频痛点。例如:入职一周,导师不理,文档不全,每天都在装忙。面对这种情况,很多人在“苟住混经历”和“跑路止损”之间反复内耗。作为过来人,建议大家不要单纯用情绪做决定,而是从投入产出比的角度来完成自己的决策。一、评估“隐性资源”的价值(含金量判定)实习的收益不是有人手把手教你写代码,而是环境浸染和权限获取。请先check一下你手头的权限:代码权限: 你能拉到核心业务的Repo吗?能看到组内的Git Commit Log吗?文档权限: 公司的Wiki、技术方案设计文档(Design Doc)、复盘报告,你有浏览权限吗?)(语雀,飞书等)数据/算力权限: 对于算法岗(尤其...
实习没人带,苟住还是跑路...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
1
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
27届学院二本,袋鼠云->快手->腾讯wxg,25年末聊聊我的前端之路
1.3W
2
...
本科五段大厂实习,秋招五个offer,我的校招结束了
7220
3
...
适可而止吧!你就是“烂泥”
5891
4
...
大四双非水产专业上岸阿里后端(五)
5694
5
...
我的世界观,就是对抗优绩主义的武器
3882
6
...
27双非杀入字节!
2755
7
...
26届双非硕Java秋招总结
1743
8
...
日常实习-小红书后端java二面
1646
9
...
实习被“放养”零产出,该及时止损还是继续苟着?
1567
10
...
学院本的秋招漫漫路,谷底之后只剩坦途
1553
创作者周榜
更多
正在热议
更多
#
实习没人带,苟住还是跑路?
#
2185次浏览
67人参与
#
工作中的卑微时刻
#
29876次浏览
190人参与
#
元旦假期你打算怎么过
#
2853次浏览
85人参与
#
过年期间可能会经历的尴尬瞬间
#
48546次浏览
313人参与
#
我们是不是被“优绩主义”绑架了?
#
4471次浏览
175人参与
#
从夯到拉,评价编程语言
#
27861次浏览
148人参与
#
如何看待应届生身份?
#
210791次浏览
2234人参与
#
查收我的offer竞争力报告
#
263843次浏览
1644人参与
#
多益网络工作体验
#
60232次浏览
300人参与
#
牛客2025仙途报告
#
21631次浏览
325人参与
#
机械制造面试记录
#
299914次浏览
3143人参与
#
实习心态崩了
#
96596次浏览
494人参与
#
华为工作体验
#
277257次浏览
1355人参与
#
26届秋招投递记录
#
109365次浏览
653人参与
#
实习打杂,要跑路吗
#
54347次浏览
330人参与
#
你有哪些缓解焦虑的方法?
#
44796次浏览
873人参与
#
找工作,行业重要还是岗位重要?
#
88342次浏览
1769人参与
#
华为池子有多大
#
154608次浏览
867人参与
#
今年你最想重开的一场面试是?
#
18290次浏览
175人参与
#
参加过提前批的机械人,你们还参加秋招么
#
105358次浏览
1647人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务