CPU扛不住了

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 这是一篇根据生活编撰的一个小故事,讲述了一个比较少见的服务器问题——CPU利用率过高。文中包含了从CPU过高告警,到一步步定位到导致CPU过高的代码的追溯过程。前面是故事,最后面是定位的总结,根据需要酌情使用。声明:故事很小,如有雷同,纯属虚构。

前言

这是一篇根据生活编撰的一个小故事,讲述了一个比较少见的服务器问题——CPU利用率过高。文中包含了从CPU过高告警,到一步步定位到导致CPU过高的代码的追溯过程。

前面是小故事,算是场景引入,如无兴趣可绕过从后记部分开始。郑重声明:故事很小,如有雷同,纯属虚构。


正文

“快看看,CPU利用率爆红了,看着要扛不住了!”小P打电话吼道,小P是服务器的监控。

“什么鬼?”,正准备睡觉的小码爬了起来,小码是系统的开发者。

我一个没多少计算的应用服务怎么就扛不住了,一定是其他服务导致的!”小码嘀咕道。


开机!

登录VPN!

打开finalShell,ssh服务器一气呵成。

看着自己娴熟的操作,小码的嘴角漏出了一丝丝骄傲。

top # Linux系统下,可以查询当前正在运行任务,包含CPU利用率、内存等信息,类似于Windows任务管理器

啪,回车的声音依然清脆,仿佛在迎合着小码的自信。

“我丢@@@”CPU使用率排行第一个是一个Java应用,进程ID 136018,“不会吧...”,嘴角微微抖了一下。

ps -aux | grep xxx-manager.jar #说明:查询服务的进程,xxx-manager.jar是服务包名,端口也可

果然,136018!136018!136018...通过多次仔细比对CPU利用率top1的进程号和自己服务的进程号,确定是小码负责的服务!小码后背一下凉了半截。

“赶快排查排查,趁服务还没宕机”

top -H -p 136018  #说明:-H开启线程模式,-p指定服务进程号

然后找到疯狂占用CPU的线程ID: 136086

printf %x 136086 #说明:此命令是将10进制转换为16进制,因为jstack中线程ID是16进制。136086转换后是0x21396

jcmd Thread.print > jstack.out # 说明:jcmd是jdk自带的分析工具,此命令会将当前jvm栈信息输出到jstack.out文件中。

最后,vim进入jstack.out文件,搜索0x21396,找到线程栈信息,就看到了业务代码。

业务伪代码

for(int i = 0; i < 65535, i++){

methodB(i)

}

void methodB(int i){

for(int j = 0 ; j < 10086; j++){

...

}

}


"这...",循环调用了一个方法methodB,该方法里面还有个循环,类似于循环嵌套循环。外层遍历次数6万+,嵌套循环次数1万+,MD这一个来回就是6亿多次。再看看接口调用方,是页面初始化加载...

“我......”,小码看着祖传代码陷入沉思,“难怪号称宇宙第一块的CPU都扛不住了”。


正在思考解决办法的时候...,“醒醒...小码!你电话响了!”,同事叫醒了呼呼大睡的小码。

看着午睡宝上面一滩口水,小码心里庆幸到:“哦,原来是一场梦啊!”。

“电话!小码!你的电话!!”

来不及去回味残余的一丝丝侥幸,小码赶快看了看手机:【13个未接来电,来自客户老总】。

“我丢@@@”,不会真扛不住了吧...


后记

本文通过一个小故事,讲述了一个比较少见的问题-CPU利用率过高的问题,包含了发现CPU过高告警,到找到导致CPU过高的代码的追溯过程。

定位步骤:

1.首先查看CPU高占用率的进程号,根据进程号查询CPU高占用率的线程ID,使用top命令。

2.快照当前服务端栈信息,线程ID转为16进制在栈信息文件里查找对应线程栈,即可找到导致CPU疯狂飙升的代码了。

3.然后根据需要,进行业务或者算法上面的调整优化。

最后

相关文章
|
人工智能 IDE 开发工具
如何快速提升编码效率: GitHub Copilot的入门教程(下)
如何快速提升编码效率: GitHub Copilot的入门教程
|
2天前
|
人工智能 弹性计算 运维
|
23天前
|
Linux 程序员 数据格式
【2026最新】Notepad++下载、安装和使用一篇搞定(附中文版安装包)
Notepad++ 是一款免费开源、轻量高效的 Windows 文本编辑器,支持 C/Python/HTML 等 80+ 语言语法高亮、代码折叠、正则替换、编码转换及插件扩展,专为程序员与文本处理用户打造,完美替代系统记事本。(239字)
|
9天前
|
人工智能 缓存 安全
Claude Code 封号真实原因曝光,这次彻底不装了,直接针对国内开发者的账号下手?
Claude Code 封号潮背后:逆向扒出客户端隐写区域标记,Anthropic 政策收紧叠加 DeepSeek 7 月涨价,国产替代更紧迫。
|
14天前
|
人工智能 JSON 自然语言处理
让教学更智慧:用阿里云百炼工作流,自动生成中小学教材内容#小有可为#有温度的AI
通过可视化工作流编排,将大模型推理能力转化为标准化的教学内容生成引擎。教师只需输入教材标题和适用学段,即可自动获得结构完整、符合课程标准的章节内容,大幅降低备课门槛,助力教育资源均衡化。
501 127
|
18天前
|
存储 人工智能 监控
QoderWork完全指南:从入门到精通,把“AI实习生”变成你的全能工作搭档
阿里云2026年推出的桌面端AI工作助手QoderWork,不止聊天,更可动手干活:本地运行、安全可控,支持文件整理、数据分析、PPT生成、网页开发等;内置专家套件、多Agent协作与自定义Skills,让AI真正成为你身边的“AI实习生”。
|
7天前
|
人工智能 编解码 物联网
2026 最新Stable Diffusion 本地部署教程 下载安装使用详细图解(含官网安装包)
Stable Diffusion(SD)是2022年发布的开源文生图模型,由Stability AI等联合开发。支持文生图、图生图、局部重绘等,依托VAE降低算力需求,可在消费级显卡运行。本文提供秋葉aaaki制作的Windows整合包(含图形界面与插件),开箱即用,零配置启动。
|
9天前
|
人工智能 安全 程序员
终于,Claude Code 封号的原因被曝光了!竟然针对中国用户,植入隐形代码?!
通俗易懂地揭秘 Claude Code 封号的手段,分享一些自己对 AI 编程困境的思考,Codex、Cursor、DeepSeek、智谱 GLM、甚至是豆包,都有所行动了
496 1
|
10天前
|
人工智能 安全 Cloud Native
Higress 新发布:AI Gateway 能力增强,Gateway API 及其推理扩展持续打磨
增强 AI 网关能力,持续打磨 Gateway API 及其推理扩展。
412 125