网站上线流量归零?运维盲区正 silently 蚕食用户
|
跟 DBA 吵完出来,我盯着测试环境里那个灰度开关——三台机器开了两台,第三台的 config.yaml 里还卡着 old_endpoint: https://api-legacy.v2。不是没提过,是提了三次,每次 PR 都被合并进 hotfix 分支,hotfix 分支又没人合进 main。这事儿我敢打包票:流量归零那天,那台机器根本没进路由池,但监控显示“服务健康”,绿得发慌。 倒不是不能查。我们上午十点零七分发现首页白屏,PM 在钉钉群里连发五条“用户反馈激增”,前端把 console 截图甩进来,全是 fetch() failed:net::ERR_CONNECTION_REFUSED。我原以为是 CDN 缓存没刷,结果 curl -I 看了一圈,header 里 Date 是 2025 年 2 月 14 日凌晨三点十七分——比上线时间早十一小时。对,早十一小时。没人改过服务器时间,也没人动过 NTP 配置。DBA 说“系统时间不准”不算运维事故,所以我现在连个工单都开不下去。 咖啡杯上印着公司 logo,边缘掉了漆,露出底下灰塑料。我喝了一口,冷的。oncall 手机震了一下,是告警平台推来的:“SLA 连续十五分钟低于 50%”,配图是一条平直到底的折线——它连抖都没抖一下,像被刀切掉下半截。我截图发给测试,她说“上次压测也这样”,然后补了一句“你猜 QA 测试时用的 mock 域名是不是还绑在 hosts 里?”我没回。这个我说不准。mock 域名的事儿,三年前就该从 checklist 里删了,可直到上周我还在晨会听人念“检查 hosts 绑定”,念得特别顺,像在读一首打油诗。 再说接口背锅这事。流量掉到零后两小时,SRE 把问题定性为“订单接口超时导致首页 fallback”。但他们只看了 /api/order/detail 的 p99,十八毫秒。没看 /api/user/profile 的三百七十二次调用——其中二百零三来自首页 banner 渲染链,而那链路上有个兜底逻辑:当 profile 调用失败且 retry 次数满三,自动跳转 to /login。但 /login 页面依赖另一个接口,那个接口在灰度期间被临时下线,状态码返回 503。503 被前端当 401 处理,所以用户点了 banner 就弹登录框,登录框又触发一次 profile 请求……死循环。没人写文档,没人标依赖,只在某次 code review 里有人 comment 一句:“这里要不要加 timeout?”后来那行 comment 被折叠了,因为 PR 关联了七张 Jira 卡,大家只扫一眼 description 就点了 approve。 那天下午四点二十三分,运维大屏最右下角,一个标着“Nginx upstream keepalive”的小曲线突然往上蹿了一格,持续十九秒,然后回落。没人点开看日志,因为那个 metric 属于“已弃用监控项”,去年 Q3 就划进 low-priority list 了。但它蹿的时候,正好是我们全量切流的前七秒。我不知道有没有因果关系,但我记得很清楚:我盯着它看的时候,隔壁工位的测试正在用 Excel 表格算她这个季度的 bug 关闭率,表格第二列写着“重复上报率 37%”,第三列留空——她还没填,手边那支红笔笔帽没盖。 KPI 这事儿我早不说真话了。去年底复盘会,总监问“用户体验指标怎么定”,我说“首屏可交互时间”,他点头,说“好,那就定成 SLA 核心指标”。三天后 OKR 文档里出现一条:“Q1 用户停留时长提升 8%(对比 2024 Q4)”。我问依据,回复是“运营那边说短视频模块导流效果好”。我嗯了一声,回去就把 FCP 监控埋点从 提到了 最顶部。不是为达标,是怕哪天它掉下去,又变成我的 KPI 黑锅。反正黑锅这东西,戴久了自己长肉,摘下来要撕皮。 其实最让我后怕的,不是归零,是归零之后那两小时。整个链路排查过程里,没人主动去看证书链是否完整,没人想起检查 let's encrypt 自动续期脚本的日志路径是否被最近一次磁盘清理误删。就因为——所有 HTTPS 接口返回的都是 200,哪怕 body 是空的。而空 body,被前端当成“无数据”,悄悄渲染了个空白 div。用户看到的是首页,以为一切正常;我们看到的是监控曲线,以为只是毛刺;DBA 看到的是慢查询日志,觉得不关他事;只有 PM 在群里反复刷新页面,说“我这边能打开啊”。我能怎么办?只能再倒一杯水,看咖啡杯上那个掉漆的 logo,心里想:优胜劣汰?呵,淘汰的从来不是代码,是那个最早发现问题却没权限改 config 的人。
文章配图,仅供参考 我现在打算干件事:下次上线前,带一台没连内网的笔记本,现场抓包。不走代理,不用 Chrome DevTools,就 tcpdump -i any port 443,把原始 handshake 记录下来。我要看看握手阶段,客户端到底收到了几个 SNI,服务器回的是哪个证书链。这事我没跟任何人提,包括测试——她刚提交了第七版回归用例,Excel 表格第三列还是空的。至于那个掉漆的 logo……算了,等杯子报废那天,我可能已经不在这个项目组了。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


安全防线崩塌?3大运维盲区正吞噬防御体系