线上CPU突然飙到500%,凶手竟是一条日志

简介: 一次CPU飙升至500%的故障,根源竟是一行日志:`logger.error("用户信息解析失败:" + userJson)`。异常请求携带近5万行乱码JSON,导致高频字符串拼接与磁盘写入,拖垮CPU。通过线程栈定位、降级日志、规范输出(限流/精简/监控),成功止损。教训深刻:看似无害的日志,亦是性能杀手。

那天我们的监控系统突然报警:某个核心服务的CPU使用率冲到了500%——因为是8核机器,单核100%,8核全满再排队。业务接口的响应时间从几十毫秒涨到了好几秒,用户那边已经开始报错了。
我赶紧登录服务器一看,java进程占用了快800%的CPU,但业务流量并没有突然暴涨,这不对劲。

一开始我以为是代码死循环

第一反应是:是不是哪个循环写错了?或者有死锁?我立马用jstack把线程栈打出来:

jstack <pid> > thread_dump.txt

然后找CPU高的线程ID,换算成16进制,在栈文件里搜。结果发现所有高CPU的线程都指向同一个地方——一个处理业务日志的方法。这个方法里有一行代码:

logger.error("用户信息解析失败:" + userJson);

看着很正常,但userJson这个字段,是前端传过来的整段用户数据,正常情况下也就几百个字符。可那段时间,有个异常请求传进来的userJson特别长——将近5万行乱码数据。

问题出在哪?

logger.error这个方法,内部会把字符串做拼接,然后格式化,最后写入磁盘。5万行的数据拼接一次就非常耗CPU了,这个异常每秒钟来了上百次。
而且这个日志级别是ERROR,写磁盘还要刷缓冲。于是CPU全耗在了字符串操作和日志输出上。
真相是:凶手不是代码逻辑,而是一条日志。当然,根本原因是那个异常请求,但如果没有这条“昂贵”的日志,CPU不至于被拖垮。

怎么解决?

把日志级别临时调高,或者直接注释掉。重启服务后,CPU立刻降回正常水平。
事后复盘做了三件事:

  1. 日志规范:禁止在循环或者高频调用的地方打印大对象、大字符串。日志里只打关键字段,比如用户ID,不要打整个JSON。
  2. 日志限流:给关键路径上的日志加上频率限制,比如同一个位置每分钟最多打印10条。

  3. 监控告警:除了看CPU,还要看异常日志的打印速率。如果某个logger每秒输出上千条,也能提前预警。

这事给我的教训

线上问题有时候特别“诡异”,不是算法错了,不是数据库慢了,而是一行看起来很无辜的日志在作妖。排查思路不能只盯着业务逻辑,IO、字符串操作、日志框架本身都可能成为性能杀手。
如果你团队里没有人专门盯这类问题,很容易踩类似的坑。比如高频日志导致磁盘IO打满、日志文件把磁盘撑爆、异常堆栈反复打印耗光CPU。这些都属于“基础设施层面”的故障,对专注于业务开发的工程师来说,不一定能第一时间想到。

关于这类问题的行业做法

在实际运维中,有些团队会通过平台能力来预防这类问题。据了解,部分运维服务商会提供“高频日志检测”功能,例如江苏立维的监控平台能够自动识别每分钟打印超过设定阈值的日志位置并发出告警,有些还内置了自动降级日志级别的响应剧本。这类做法可以帮助团队在问题发生前或刚发生时快速介入,减少人工排查的成本。
当然,每家公司可以根据自己的情况决定是否采用这类工具。大道理说一千遍不如自己踩一次坑记得牢,只是希望你的团队踩坑的时候,能有人第一时间想到:“查查日志打印,可能就是凶手。”

相关文章
|
17小时前
|
人工智能 自然语言处理 算法
Is Grep All You Need?Agent 搜索里,Harness 比检索方法更重要
本文解读PwC AI团队论文《Is Grep All You Need?》,聚焦Agent搜索中grep与向量检索的实效对比。研究发现:在长对话检索任务中,grep常优于向量检索,但效果高度依赖Agent Harness(运行环境)及工具返回方式(inline/file-based)。论文揭示——Agent搜索是系统工程,非单点技术问题。
Is Grep All You Need?Agent 搜索里,Harness 比检索方法更重要
|
14小时前
|
设计模式 人工智能 数据可视化
Agentic 设计模式拆解:6 种结构的优缺点与应用场景
本文系统梳理Agentic AI六大核心设计模式:单一、顺序、并行智能体,循环评审,协调者与子智能体,以及作为工具的子智能体。聚焦智能体、用户、模型与工具间的结构化交互,提炼可复用的工程骨架,助力规模化落地。
34 5
Agentic 设计模式拆解:6 种结构的优缺点与应用场景
|
15小时前
|
机器学习/深度学习 人工智能 算法
图解强化学习 |手算近端策略优化算法(PPO)
PPO(近端策略优化)是当前最主流的强化学习算法,以训练稳定、上手简单、泛化性强著称。它通过Actor-Critic双网络架构,结合PPO-Clip损失函数限制策略更新幅度,并利用GAE优势估计提升样本效率,广泛应用于游戏AI、机器人控制、大模型对齐等领域。
36 3
|
15小时前
|
机器学习/深度学习 存储 人工智能
图解人工智能的数学基础(线性代数)
本文系统讲解线性代数核心概念,涵盖向量(定义、几何/坐标表示、内积)、矩阵(含义、运算、秩、逆、相似、分解)、行列式(几何意义与变换关系)、线性方程组、特征值与特征向量、二次型、向量空间及范数等,强调其在AI与神经网络中的实际应用。
37 7
|
16小时前
|
人工智能 调度
如何独自完成工作任务
在AI智能体时代,“一个人干一个部门的活”成为现实:关键不在加班,而在任务拆解、工具协同与流程复用。善用大模型、AI工具与自动化工作流,将重复劳动交给智能体,人专注判断、创意与交付。本质是构建“人+AI+系统”的高效协同范式。
33 4
|
18小时前
|
人工智能 API 开发工具
阿里云CodingPlan购买订阅火爆,还有首月优惠吗?7.9元的Lite版本还有吗?
阿里云百炼Coding Plan是专为开发者打造的AI编程订阅服务,当前仅开放Pro高级套餐(200元/月),含9万次/月请求额度,支持Qwen3.5-Plus、Kimi-k2.5等多模态模型。需每日9:30抢购,不支持退款。阿里云CodingPlan官方订阅链接:https://t.aliyun.com/U/G7pldC
51 3
|
19小时前
|
存储 运维 数据可视化
简单易用的进销存该怎么选?分清真易用与功能极简陷阱
本文揭露进销存“伪易用”陷阱——表面简单实则阉割核心功能,导致批量修改、多单据联动、多仓管理时频频卡壳。依据Gartner与IDC权威报告,70%落地失败源于“假易用”。文章首创「真易用五大维度」:智能录单提效90%、Excel高容错批量更新、界面自定义、一对一微信即时服务、独享云稳定架构,助企业避开营销话术,选对长期可用的进销存系统。(239字)
|
18小时前
|
人工智能 Java 数据库连接
都是 AI Coding,为什么 Java 体验差了一个量级?五条方法论帮你构建自己的 Harness 环境
本文探讨Java微服务项目AI编码体验差的根源——本地无法运行导致AI无法自主验证。提出三大改造原则:接口抽象+Profile隔离实现零侵入本地化;CLI优先让AI可调用工具;最小可运行子集替代外部依赖。实践后,Bug修复从30分钟缩短至2分钟内闭环。
|
13小时前
|
人工智能 自然语言处理 数据处理
《AI智能体时代,OPC中国为什么开始被关注》
AI智能体正重塑行业协作模式,“OPC中国”聚焦“One Person Company”理念,探索AI时代下轻量化组织、个人能力放大与新型职业教育。它倡导以AI Agent、工作流自动化和多智能体协同为核心,培养个体驾驭复杂任务的新能力。(239字)
|
17小时前
|
人工智能 分布式计算 安全
阿里云大数据 AI 平台 Skills 合集
阿里云大数据 AI 平台 Agent Skills(简称 Skills)是阿里云大数据 AI 平台官方提供的 AI Agent 技能发现与安装平台,为 Agent 提供安全、可靠的云资源操作能力,本文汇总阿里云大数据 AI 平台 Skills,帮助用户快速导航。

热门文章

最新文章