网关回 409 不是服务活着:一次平台冷却与看门狗的判定复盘

举报
yd_271741226 发表于 2026/11/01 10:49:01 2026/11/01
【摘要】 早上 06:57,用户一句话:全都连不上了。第一反应是查配置,结果配置是无辜的——服务端整台机器被平台冻住了。时间线是这样的。06:53,保活脚本最后一次探测正常:两个网关都回 404、SSH 可达。06:53 到 06:57 之间,平台把这台免费机器打进了 cooling down:三个网关全部回 409,SSH 直接被拒,平台还给了原话——machine is cooling down ...

早上 06:57,用户一句话:全都连不上了。第一反应是查配置,结果配置是无辜的——服务端整台机器被平台冻住了。

时间线是这样的。06:53,保活脚本最后一次探测正常:两个网关都回 404、SSH 可达。06:53 到 06:57 之间,平台把这台免费机器打进了 cooling down:三个网关全部回 409,SSH 直接被拒,平台还给了原话——machine is cooling down until 2026-10-30T23:01:21Z,换算成本地时间 07:01:21。07:01:48,网关恢复 404。回机器上看,uptime 8 小时连续,这不是重启,是冻结后原样恢复:Xray 在跑、住宅出口容器 healthy、连 VPN 隧道都还是原来那条,出口 IP 没变,前后约 8 分钟。

先分清两种停机。这个平台已知的规则是闲置 30 分钟自动暂停,但当时机器并不闲:用户流量在跑、保活探测每 25 分钟一次也在跑。这次冷却只有约 8 分钟,平台没给原因。把冷却当成闲置暂停去处理,方向就错了——它不需要唤醒操作,到点自己回来,状态还全保留。

真正的收获在复盘看门狗的时候。这次冷却恰好落在两次探测之间(06:53 正常、07:01 已恢复、下一次探测约 07:18),所以没有真的漏报。但把判定逻辑翻出来看,有个洞:旧逻辑是「网关回任何非 000 的 HTTP 状态码,就算活」。问题在于,409 不是我的服务回的,是平台边缘在机器冻结时代答的。假如冷却再长一点、覆盖到某个探测点,日志会写着 up、通知会保持沉默——机器停着,看门狗说一切正常。这类误判平时不发作,只在真出事时发作。

修法是把「活」的定义收紧到应用本身:网关必须回 404(那是我在机器上跑的 Xray 对根路径的特征应答),或者 SSH 探测成功,两者有其一才算存活;409 和其他任何平台代答码一律不算。改完立即实跑一次回读:up、gw=404/404、ssh=1,判定链正常。

教训就一条:探针要验证语义,不要验证连通性。HTTP 有响应,只证明边缘在应答,不证明你的服务在应答。存活判定锚定的应该是应用自己的特征响应,而不是「有个状态码就行」。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。