首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
01-22 13:34
门头沟学院 嵌入式软件工程师
嵌入式春招快开始了,如何更好的准备
一、时间规划(春招前2-3个月开始)第一阶段(1-1.5个月):项目准备完成1-2个有深度的项目整理项目文档和代码准备项目演示材料第二阶段(3-4周):基础知识强化C/C++核心知识点操作系统、数据结构硬件相关知识第三阶段(2-3周):面试冲刺模拟面试刷题(********中等难度)简历优化二、项目准备:打造有竞争力的作品推荐项目方向(基于STM32)项目1:智能物联网设备(综合性强)硬件:STM32F4/H7 + ESP8266/ESP32功能模块: LVGL图形界面(触摸屏交互)OTA固件升级(通过WiFi)低功耗模式(Sleep/Stop/Standby切换)传感器数据采集(温湿度、光照...
点赞
评论
收藏
分享
01-18 17:14
清华大学 Java
java简历里面第一个项目做什么比较好呢
给大家推荐一个难度还行的项目。项目简介:设计并实现一个高并发分布式秒杀系统,支持商品秒杀活动,具备高并发下的稳定性、可扩展性与数据一致性保障。核心功能:秒杀活动管理:创建活动、配置库存、设置限购规则秒杀下单:用户请求限流、排队、下单、支付订单处理:异步生成订单、库存扣减、超时自动取消秒杀结果查询:实时返回抢购结果与订单状态技术亮点:高并发限流:使用 Redis + Lua 脚本实现库存预扣与原子性操作,避免超卖消息队列异步下单:使用 RocketMQ/Kafka 进行异步订单入库与库存扣减,削峰填谷分布式锁与幂等:使用 Redisson 实现分布式锁,保证秒杀过程的幂等性与并发安全缓存与热点数...
简历第一个项目做什么
点赞
评论
收藏
分享
2025-11-28 18:08
门头沟学院 Java
JAVA约面
27届,一下子投了几份简历,拿了3个都是小公司的约面,都在下个礼拜,规模都是500人,有没有牛友说说第一次要注意哪些啊?!!!八股已经过了两遍了,四大件看了还有啥吗,小公司一般问八股还是项目多啊,顺便问问有没有牛友面过这三家的,给点焚决!!!
点赞
评论
收藏
分享
昨天 17:17
门头沟学院 C++
比起埋头干活,更重要的是“偷师”
最近复盘实习经历,越来越觉得:决定一份实习含金量的,从来不是你活干得有多快,而是你从Leader和Mentor身上“压榨”出了多少认知。很多同学(包括刚开始的我)都容易陷入一种“学生思维”:被动地等着分配任务,做完交差,不敢多问,生怕打扰领导。殊不知,高产出的核心在于“高频互动”与“深度对齐”。关于如何围绕Leader和Mentor做更有价值的产出,分享几点我的心得:1. 对Mentor:从“问怎么做”进阶到“问为什么”Mentor通常是手把手带你的师兄师姐,是你的引入人。 低效沟通: 遇到卡点直接问“这个怎么弄?”,mentor教你做完,你就丢群里不管了。 高产出策略:主动发起同步: 如果在...
实习怎么做才有更好的产出
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
1
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
备战春招,网申一键填写工具,发布了!!!
3.1W
2
...
实习产出如何包装?
6910
3
...
【官方活动】牛客新春计划:给陌生人的一封信
6296
4
...
27双非非科班4段实习从字节tt到腾讯wxg
5683
5
...
32岁程序员猝死,底薪3千要24h待岗
5568
6
...
27届实习时间线
4513
7
...
我爸对计算机行业的看法,是否准确?
4345
8
...
专科工作一年后的心里话
3610
9
...
第一次被同事气笑了
2923
10
...
多益可以去吗
2526
创作者周榜
更多
正在热议
更多
#
哪些公司开春招了?
#
9139次浏览
115人参与
#
运营人的第一份offer应该如何选
#
213857次浏览
1253人参与
#
上班以后,你还有哪些坚持的爱好?
#
6549次浏览
167人参与
#
华为工作体验
#
288720次浏览
1369人参与
#
你都在哪些场所面过试?
#
18224次浏览
217人参与
#
聊聊你的职场新体验
#
314271次浏览
1852人参与
#
找工作以来,你最看不惯__
#
12533次浏览
282人参与
#
AI coding的好用工具分享
#
16436次浏览
354人参与
#
工作压力大怎么缓解
#
137166次浏览
1228人参与
#
实习怎么做才有更好的产出
#
10991次浏览
204人参与
#
实习教会我的事
#
51393次浏览
399人参与
#
你最近因为什么迷茫?
#
32256次浏览
459人参与
#
实习生工资多少才算正常?
#
11712次浏览
189人参与
#
小米求职进展汇总
#
1006036次浏览
6509人参与
#
你给AI提过哪些离谱的需求?
#
5417次浏览
157人参与
#
你见过最离谱的招聘要求是什么?
#
253967次浏览
1727人参与
#
非技术2024笔面经
#
458775次浏览
4930人参与
#
领导做过最不靠谱的事
#
11561次浏览
203人参与
#
你想跟着什么样领导?
#
47475次浏览
235人参与
#
职场破防瞬间
#
359214次浏览
2835人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务