当前位置:

首页 > 软件教程 > 系统死机了,只看代码不看人

系统死机了,只看代码不看人

各位朋友听我一句劝,写代码提供方法给别人调用时,不管是内部系统调用,还是外部系统调用,还是被动触发调用(比如MQ消费、回调执行等),一定要加上必要的条件校验。千万别信某些同事说的这个条件肯定会传、肯定有值、肯定不为空等等。这不,临过年了我就被坑了一波,弄了个生产事故,年终奖基本是凉了半截。我决定专注于代码本身,而非人,以确保系统高可用性和稳定性。以下是几个小教训,或许对你也有帮助。一、事发经过我的业务场景是:当业务A发生变化时,会触发发送MQ消息,然后应用会接收到MQ消息,处理后将数据写入Elastics

本文目录

    系统干崩了,只认代码不认人

    各位朋友听我一句劝,写代码提供方法给别人调用时,不管是内部系统调用,还是外部系统调用,还是被动触发调用(比如MQ消费、回调执行等),一定要加上必要的条件校验。千万别信某些同事说的这个条件肯定会传、肯定有值、肯定不为空等等。这不,临过年了我就被坑了一波,弄了个生产事故,年终奖基本是凉了半截。

    我决定专注于代码本身,而非人,以确保系统高可用性和稳定性。以下是几个小教训,或许对你也有帮助。

    一、事发经过

    我的业务场景是:当业务A发生变化时,会触发发送MQ消息,然后应用会接收到MQ消息,处理后将数据写入Elasticsearch。

    (1) 收到一个业务A的异常告警,当时的告警如下:

    (2) 咋一看觉得有点奇怪,怎么会是Redis异常呢?然后自己连了下Redis没有问题,又看了下Redis集群,一切正常。所以就放过了,以为是偶然出现的网络问题。

    接着,在技术问题群里,客服汇报说部分用户出现异常情况,我立即检查系统,确认偶发性问题的存在。

    (4) 于是我习惯性的看了几个核心部件:

    • 网关情况、核心业务Pod的负载情况、用户中心Pod的负载情况。
    • Mysql的情况:内存、CPU、慢SQL、死锁、连接数等。

    发现了慢SQL和元数据锁时间过长的情况,主要是由于一张大表的全表查询导致数据量过大,执行速度缓慢,进而导致元数据锁持续时间过长,进而耗尽数据库连接数。

    SELECT xxx,xxx,xxx,xxx FROM 一张大表

    (6) 立马Kill掉几个慢会话之后,发现系统仍然没有完全恢复,为啥呢?现在数据库已经正常了,怎么还没完全恢复呢?又继续看了应用监控,发现用户中心的10个Pod里有2个Pod异常了,CPU和内存都爆了。难怪使用时出现偶发性的异常呢。于是赶紧重启Pod,先把应用恢复。

    (7) 问题找到了,接下来就继续排查为什么用户中心的Pod挂掉了。从以下几个怀疑点开始分析:

    • 同步数据到Elasticsearch的代码是不是有问题,怎么会出现连不上Redis的情况呢?
    • 会不会是异常过多,导致发送异常告警消息的线程池队列满了,然后就OOM?
    • 哪里会对那张业务A的大表做不带条件的全表查询呢?

    (8) 继续排查怀疑点a,刚开始以为:是拿不到Redis链接,导致异常进到了线程池队列,然后队列撑爆,导致OOM了。按照这个设想,修改了代码,升级,继续观察,依旧出现同样的慢SQL 和 用户中心被干爆的情况。因为没有异常了,所以怀疑点b也可以被排除了。

    (9) 此时基本可以肯定是怀疑点c了,是哪里调用了业务A的大表的全表查询,然后导致用户中心的内存过大,JVM来不及回收,然后直接干爆了CPU。同时也是因为全表数据太大,导致查询时的元数据锁时间过长造成了连接不能够及时释放,最终几乎被耗尽。

    (10) 于是修改了查询业务A的大表必要校验条件,重新部署上线观察。最终定位出了问题。

    二、问题的原因

    因为在变更业务B表时,需要发送MQ消息( 同步业务A表的数据到ES),接受到MQ消息后,查询业务A表相关连的数据,然后同步数据到Elasticsearch。

    但是变更业务B表时,没有传业务A表需要的必要条件,同时我也没有校验必要条件,从而导致了对业务A的大表的全表扫描。因为:

    某些同事说,“这个条件肯定会传、肯定有值、肯定不为空...”,结果我真信了他!!!

    由于业务B表当时变更频繁,发出和消费的MQ消息较多,触发了更多的业务A的大表全表扫描,进而导致了更多的Mysql元数据锁时间过长,最终连接数消耗过多。

    同时每次都是把业务A的大表查询的结果返回到用户中心的内存中,从而触发了JVM垃圾回收,但是又回收不了,最终内存和CPU都被干爆了。

    至于Redis拿不到连接的异常也只是个烟雾弹,因为发送和消费的MQ事件太多,瞬时间有少部分线程确实拿不到Redis连接。

    最终我在消费MQ事件处的代码里增加了条件校验,同时也在查询业务A表处也增加了的必要条件校验,重新部署上线,问题解决。

    三、总结教训

    经过此事,我也总结了一些教训,与君共勉:

    (1) 时刻警惕线上问题,一旦出现问题,千万不能放过,赶紧排查。不要再去怀疑网络抖动问题,大部分的问题,都跟网络无关。

    (2) 业务大表自身要做好保护意识,查询处一定要增加必须条件校验。

    (3) 消费MQ消息时,一定要做必要条件校验,不要相信任何信息来源。

    (4) 千万别信某些同事说,“这个条件肯定会传、肯定有值、肯定不为空”等等。为了保障系统的高可用和稳定,咱们只认代码不认人。

    (5) 一般出现问题时的排查顺序:

    • 数据库的CPU、死锁、慢SQL。
    • 应用的网关和核心部件的CPU、内存、日志。

    (6) 业务的可观测性和告警必不可少,而且必须要全面,这样才能更快的发现问题和解决问题。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    软件教程
    相关文章 更多
    用“阉割”换“解禁”?Fable 5明日回归,但已不是原来的Fable 5
    用“阉割”换“解禁”?Fable 5明日回归,但已不是原来的Fable 5

    Anthropic的Fable5模型为换取解禁新增安全分类器,导致编程等核心能力被降级至旧模型处理,用户仅约50%额度可用。开发者批评该版本能力已被“阉割”,并非完整回归。此举反映美国AI监管转向能力可用但需动态管控的模式。

    GPT-5.6来了,Fable 5慌了?
    GPT-5.6来了,Fable 5慌了?

    GPT-5.6全量上线,分Sol、Terra、Luna三档,覆盖复杂推理、日常办公和高频低价场景。Fable5因安全隐患暂停后恢复,与GPT-5.6Sol能力各有胜负,但后者价格更低。OpenAI通过分层定价和产品整合,意图缓解巨额亏损并抢占市场。

    Coding 竞争升级,Agnes 打出模型与产品组合拳
    Coding 竞争升级,Agnes 打出模型与产品组合拳

    Agnes发布新一代文本模型Agnes-2.5Flash及桌面端产品AgnesCode,聚焦编程场景,针对代码理解、多文件修改、复杂推理等优化。模型在多项基准测试中提升显著,旨在通过更强能力与更低成本,让AI成为日常工作中的协作伙伴,而非简单问答工具。

    AnySearch 面向全球推出 “学生与开发者成长计划”
    AnySearch 面向全球推出 “学生与开发者成长计划”

    7月24日,AnySearch 在北京搞了一场开发者沙龙,创始人兼CEO薛冠群在活动现场正式对外发布了“AnySearch 学生与开发者成长计划”(AnySearch Student & Developer Program)。这个计划面向全球的学生和开发者开放,目的很明确:通过开放AI搜索基础设施,

    Token去哪了?大量用户质疑智谱GLM:存在词元泄露和缓存计费问题
    Token去哪了?大量用户质疑智谱GLM:存在词元泄露和缓存计费问题

    用户质疑智谱GLM模型在长上下文高并发场景下出现词元泄露与缓存计费异常,表现为输出混杂无关代码、缓存命中率异常高且计费不透明。官方承认曾因KVCache竞态条件导致输出故障,但未确认数据泄露。争议仍在发酵。

    阿里云上线团队版Token Plan
    阿里云上线团队版Token Plan

    5月11日,阿里云正式推出了团队版Token Plan服务。这项服务集成了包括Qwen3.6、Kimi-K2.6、GLM-5.1、Wan2.7在内的十多款多模态大模型,其核心目标在于解决企业规模化使用AI订阅服务的难题。通过支持多坐席分配与管理,并提供标准、高级、尊享三档灵活套餐,企业可以根据自身需

    迅策推出全球首款TokenOS操作系统TokenONE
    迅策推出全球首款TokenOS操作系统TokenONE

    迅策发布全球首款TokenOS操作系统TokenONE,旨在将企业非标准化数据转化为AI可用的标准化Token,驱动业务决策。该系统通过标准化流程大幅缩短AI落地周期,并构建多维定价体系,使Token价值与业务收益深度绑定。迅策商业模式转向“Token付费+价值分成”,目标是与行业龙头共建垂直领域“Token工厂”,推动AI在关键领域的工业化落地。

    Token经济崛起:迅策(03317)有望跻身AI“千亿俱乐部”
    Token经济崛起:迅策(03317)有望跻身AI“千亿俱乐部”

    智通财经APP获悉,AI行业正式从“补贴烧钱”跨入“商业化定价时代”。被市场称为“Token第一股”的迅策(03317)迎来利好!叠加近日国泰君安国际已将目标价大幅上调至245港元/股。迅策有望成为AI“千亿俱乐部”的新成员。 中国AI弯道超车:价格优势构筑竞争力 风向正在转变。日前,人工智能公司A

    从“摸黑探索”到“撞开大门”,OpenClaw引爆的产业技术路线演变
    从“摸黑探索”到“撞开大门”,OpenClaw引爆的产业技术路线演变

    从“动口”到“动手”:OpenClaw如何将AI推入“执行时代”? 文|洞见新研社 3月的最后一周,OpenClaw的GitHub社区上演了一出反转剧。往日里忙着报错的开发者们这次成了观众,主角换成了来自蚂蚁、天融信、360等机构的安全研究员,他们密集披露了数十个涉及远程接管、信息泄露的高风险漏洞。

    国内首款“养虾本”来了
    国内首款“养虾本”来了

    2026.04.14 先说一个核心判断:未来的竞争,本质上是对用户注意力的争夺。谁能更高效地连接信息与需求,谁就能在市场中占据先机。 这张图揭示的,正是这种连接效率的底层逻辑。它清晰地展示了从数据源到价值呈现的完整链路,每一个环节都环环相扣。你猜怎么着?其中任何一个节点出现迟滞或偏差,最终输出的效果

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。