加入收藏 | 设为首页 | 会员中心 | 我要投稿 站长网 (https://www.51zhanzhang.com/)- 应用程序、AI行业应用、CDN、低代码、区块链!
当前位置: 首页 > 百科 > 正文

网站上线流量归零?运维盲区正 silently 吞噬用户

发布时间:2026-10-16 08:02:16 所属栏目:百科 来源:DaWei
导读:  跟老板拍账单。去年五月上线那波,CDN缓存层全挂了,但流量归零不是从监控告警开始的——是从财务部问“这个月CDN预算怎么只花了百分之三”开始的。我调了十八毫秒的边缘节点日志,发现 purge 规则三百七十二条,其中第

  跟老板拍账单。去年五月上线那波,CDN缓存层全挂了,但流量归零不是从监控告警开始的——是从财务部问“这个月CDN预算怎么只花了百分之三”开始的。我调了十八毫秒的边缘节点日志,发现 purge 规则三百七十二条,其中第三百六十九条是上个月后端改需求时顺手加的通配符,匹配了所有 /api/v2/ 路径下的响应头 Cache-Control: no-store,连 favicon.ico 都被标记成“永不缓存”。我敢打包票,那条规则没进过任何灰度验证流程,它就躺在 prod 的配置库里,像块没擦干净的玻璃,透明,但割人。


  运维在机房柜子底下贴了张手写便签:“主控板温度超阈值请手动降频”,字是蓝色中性笔写的,末尾还画了个歪歪的箭头指向空调出风口。那天下午三点十七分,我站在机柜前拍照片取证,运维老张蹲着拧螺丝,袖口沾了点黄油,后颈有颗痘。他抬头问我是不是要重启 nginx,我说先别动——我刚看见 CDN 厂商的销售王磊打进来第三个电话,响到第四声自动转语音信箱,他留的言是:“李工,咱们上次聊的回源带宽包,今天能批不?” 我没回。反正他半小时后还会打。


  那个小红点——节点分布图右下角,坐标 (114.26, 22.53),标着“SZ-EDGE-07A”,旁边打了个红色叹号,鼠标悬停显示“last heartbeat > 42h”。没人点进去看。它和故障无关,是上个月深圳某IDC迁出遗留的虚节点,配置没删干净。我们所有人,包括厂商二线支持、云平台SRE、甚至值班QA,都默认那个红点只是UI bug。直到第三天晨会,有人顺嘴说“咦,这红点还在?”——结果发现它连着一个被遗忘的DNS子域,而那个子域,刚好是运营同事发给KOC群的短链跳转入口。短链走的302重定向,每次点击都经过这个已离线的边缘节点,失败后直接 fallback 到主站网关……然后被 WAF 里一条三个月前写的 rate-limiting 策略给干掉了。对,就是那条写着“每IP每分钟限流18次”的策略。十八次,不多不少,刚好卡死全部 KOC 私域流量,而他们转发用的都是微信内置浏览器,User-Agent 里带 “MicroMessenger” 字样——这条规则,当时是为防爬虫写的,没加 UA 白名单。


  咖啡杯印着“CloudFlare Partner Summit 2023”,杯沿有个缺口。是我上周去杭州参加闭门会领的,回来一直搁在工位左边第二个格子。那天早上八点四十三分,后端小陈来倒水,杯子太满,泼了一滴在我笔记本上,洇开了第一页写的“purge逻辑校验清单(待补)”。他一边道歉一边擦,我盯着那摊水渍,忽然想起他上周五发我的那段代码 diff:他把 /api/v2/user/profile 接口的响应体 JSON 结构微调了字段顺序,顺便把 ETag 生成逻辑从 MD5 改成了 sha256——但他没改 Nginx 的 etag 指令开关,默认开着,于是所有旧客户端发起 If-None-Match 请求时,拿不到匹配的 ETag,强制回源。回源本身没问题,问题是上游 PHP-FPM 进程池早满了,所以每个请求都等十五秒以上才返回,而 CDN 边缘节点的 connect_timeout 是十二秒。断连,retry,再断连……最后用户看到的,是白屏三秒,然后直接跳转到维护页。不是报错,不是慢,是彻底静音。就像拔了网线,还没亮红灯。


  我原以为是 LB 权重漂移导致的灰度失衡,结果查完 SLB 日志发现,所有健康检查全绿。再往下翻 ingress-controller 的 access log,请求压根没进 k8s 集群。再查前面那层 LVS 的 conntrack 表——哦,对,LVS 后面接的是云厂商自研的四层代理,他们管那玩意叫“高性能流量网关”,去年Q4才上线,文档里写了“支持连接复用”,但没提一句:它在 TLS 握手阶段会主动 DROP 所有带 ALPN 协议协商扩展的 ClientHello 包。而我们的新版 App SDK,默认启用了 HTTP/3 试探性升级,只要 TCP 握手成功,立马发带 h3 标识的 ALPN 扩展。结果呢?一半设备握手成功、一半失败;成功的,卡在 ALPN negotiate 阶段永远等不到 server hello;失败的,自动 fallback 到 HTTP/1.1——但 fallback 后的请求又撞上了上面说的 ETag 那一整套连锁反应。所以说,真不是架构不行,是四层代理和七层 SDK,在一个没人测试过的握手间隙里,安静地互相礼貌性地把对方判了死刑。


文章配图,仅供参考

  采购流程今年改了,必须提前两个月填预审单,附三份比价单和一份技术可行性承诺函。我上周把那份承诺函打了三次退回——理由是“未体现跨AZ容灾SLA折算系数”。其实我心里清楚,他们不是真要看系数,是卡流程等Q3预算冻结通知。但我还是重写了。因为上个月财务刚砍掉我们组一笔“非紧急压测环境费用”,理由是“当前无重大版本上线”。呵,流量归零算不算重大?


  监控大屏上,那个标着“Global Cache Hit Ratio”的曲线,凌晨两点零七分抖了一下,从 92.4% 掉到 88.1%,持续两分十三秒,然后自己弹回去。没人截图,没人标注,没人拉群@。它旁边实时滚动着另一行数字:“Active WebSocket Connections”,正在以每秒 0.3 个的速度缓慢下跌,已经跌了五个小时。这个数也没人看,因为它从来没超过过阈值——设计之初就没设阈值。可那天之后我悄悄加了个告警:当它连续四小时单调递减,且斜率超过 -0.12/sec,就发邮件。现在它每天凌晨三点准时响一次,我把它设成静音了。


  优胜劣汰这点,我是真服气。不是指系统,是指人。上线前三天全员过评审,二十个人,十二个P7以上,没人问“如果 purge 通配符匹配了静态资源怎么办”,没人问“HTTP/3 试探开启后 fallback 是否经过所有中间件路径”,更没人问“那个 SZ-EDGE-07A 红点,到底还活不活着”。问的人会被当成找茬,不问的人,第二天就升职加薪去盯另一个新项目了。所以我现在不拦着新来的问问题,也不催他们改脚本。我就让他们先泡杯茶,坐我对面那个椅子上,自己看十天监控大盘。椅子扶手上印着“阿里云 ACE 认证 2021”,磨得有点掉漆。


  下一步?我把 purge 规则库做了个最小化子集提取脚本,只跑 prod 最近一周真实命中的规则——删掉其余三百六十五条。脚本明天上午十点跑第一遍。至于那个 ALPN 握手问题?我已经抄送了云厂商 SRE 团队、他们的CTO邮箱、还有咱们法务的合规接口人。没写问题描述,附件只有三张抓包截图,时间戳都精确到毫秒。他们认得出来。如果不认,就让他们把合同第七条第二款逐字读三遍——那里写着,“四层网关须兼容 RFC 8446 第3.1.1节定义的全部ALPN协商行为”。读完,自然就知道该打哪个补丁了。

(编辑:站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!