国际站按地区灰度发布时,如何观察错误率并判断是否回滚? | 全球代理
按发布单元归并地区,先定错误率口径、最小样本与观察窗口,再把阈值写成能执行的回滚条件,并给出一次演练可复用的记录字段与判定标准。
国际站的错误率不该按国家逐个设。先把共享同一套代码、机制和依赖的地区合成一个发布单元,每个单元给一条错误率基线和观察窗口,再把“连续 N 分钟超过基线几倍”写成熔断条件;核心路径完全不可用时直接回滚,不必等窗口跑完。测试和灰度时,用代理IP 把出口固定到目标地区,不同地区的错误率才有可比性。下面整理一套能照做的分组口径、阈值写法和演练记录表。
先按发布单元分组,不按国家分别看
错误率应以发布单元为单位观察,而不是把每个国家单独当成一条结论。先把使用同一版本、配置和依赖的地区归为一个单元,再为每个单元设定基线。同一版本、同一套地区配置、同一批依赖的一组地区,才能合成一个单元。确定分组后,可对照代理 IP 产品页整理目标地区清单,避免监控分组与实际测试范围不一致。原因是单个小市场的样本量太小,错误率的波动大部分是噪声;而把配置不同的地区混在一起,配置问题会被平均掉,看起来反而像“偶发”。
分组时给每个单元标注三件事:包含哪些地区、各占多少流量、当前配置版本。配置或依赖明显不同的地区单独拆出来,配置差异明显时应拆分单元,避免不同表现被汇总后掩盖。发布前先按风险缩减测试组合,把监控和人力留给高风险单元。出口类型也会影响基线:住宅 IP 走真实用户网络,机房 IP 延迟稳定,两类混在一张图里,波动会被误读成故障。
统一错误率口径并设置最小样本量
没有口径的错误率,涨了也不知道该不该动。分子默认算服务端错误和超时;4xx 先按业务定义分类——用户输入错误、未登录、权限不足单独统计,不混进可用性,影响核心路径的 4xx(如地区策略拦截、回调地址错误)单列告警或并入对应服务指标。分母用有效请求总数,不用 UV:请求级错误率 = 错误请求数 ÷ 有效请求总数,同一个用户重试只会增加请求数,不会让分母变大十倍。若要观察“受影响用户比例”,分子分母都要换成用户口径(受影响用户数 ÷ 活跃用户数),不能拿错误请求数去除以 UV。重试、超时、4xx 的纳入规则要在统计前写进口径文档,否则同一张图换个算法就能得出不同结论。
小市场应设最小样本量。若指标涉及代理出口的连通性或延迟,可另参考代理 IP 可用率、延迟和稳定性测试,不要把网络指标与应用错误率混为一谈。例如,团队可以设定单窗口最低请求量;样本不足时,将该地区标记为数据不足,结合发布单元整体指标和核心路径监控判断。具体样本量需按流量和历史波动确定。文中的百分比和倍数只是阈值写法示例,实际回滚标准应根据业务影响、历史基线和团队响应能力确定。
用双窗口识别突发故障和持续恶化
一个窗口不够用,急跌和慢漂是两种完全不同的故障。两个窗口共用同一条基线,但判断逻辑分开。
5 分钟窗口触发时,先暂停放量还是回滚
五分钟窗看的是“还能不能用”,用绝对阈值判断,例如核心路径成功率低于 A%。A% 由团队按业务基线定,并同时设单窗口最小请求量;样本不足时先标“数据不足”,不按超阈值处理。它胜在快、输在噪声大,所以触发后的动作不是立刻全量回滚,而是按下一节的统一模板走:达到最小样本且持续满足短窗阈值 → 暂停放量或摘除受影响流量 → 按业务预案确认后回滚;核心路径完全不可用时不必等窗口,直接走紧急回滚。
1 小时窗口持续偏高时,怎样判断趋势
一小时窗看的是“是不是在变坏”,也可参考相对基线变化,例如 5xx 率达到基线 B 倍;A、B 两个值按历史波动和业务影响设定。慢速劣化靠趋势判断:可将连续多个窗口不收敛设为升级条件,单次越线先结合样本量与核心路径表现复核。
只用一个小时窗,整页挂掉要等一小时才动手;只用五分钟窗,慢速劣化永远触发不了。
把阈值写成值班人员能执行的回滚条件
回滚条件必须是一句能执行的话,不能是含糊的临场判断。若故障表现为连接超时或 TLS 错误,可先按连接超时、TLS 握手和代理出口稳定性记录确认是否属于出口链路问题,再按发布指标决定是否回滚。推荐写成两句:“当某单元连续 5 分钟、样本量不低于最小请求数、核心路径成功率低于 A% 时,值班人按预案确认后在 10 分钟内回滚到上一版本。”“当某单元 1 小时窗口内 5xx 率持续达到基线 B 倍时同样处理;基线接近 0 时改用绝对阈值,避免倍数失效。核心路径完全不可用时可跳过确认直接紧急回滚。”
同时把三个角色写死:谁有权发起回滚、回滚到哪个版本号、回滚后由谁确认恢复。缺一项,真出事时就会卡在“谁来拍板”上。这里的 A%、B 倍、10 分钟都是示例值,按业务影响设定;“问题集中在单一地区且流量占比低于 5% 时只摘除该地区”同样是示例,低流量比例本身不能作为不回滚的理由。
用一次演练验证告警和回滚流程
阈值没演练过,第一次真正用它,往往就是故障当天。在测试环境把错误率人为推高,完整走一遍告警、判断、回滚、恢复确认,记录每一步耗时。若演练耗时超过团队约定的响应目标,应检查值班链路、告警送达和操作权限,再决定是否调整流程。
> 表格中的阈值、用例编号和结果如无测试记录支持,均应视为演示样例;实际验收标准以项目需求、历史基线或团队约定为准。
| 字段 | 记录内容 | 用途 |
|---|---|---|
| 发布单元 | 单元名、包含地区、流量占比 | 确认影响面 |
| 触发指标 | 窗口长度、错误率、基线、倍数 | 判断是否达标 |
| 执行动作 | 回滚或摘除地区、执行人、时间 | 还原决策链 |
| 恢复确认 | 恢复时间、复核指标 | 证明真的恢复 |
演练记录可分别填写告警触发、值班确认、执行回滚和指标恢复的时间。若要展示时间线,应标为单次演练示例,不把示例耗时当作响应承诺。
FAQ
错误率基线多久更新一次?
每月或每个大版本后重算。用半年前的数字,阈值会失真。
错误率回落就说明恢复了吗?
不一定。先看请求量回来没有,流量被摘走时错误率也会降。
灰度期间两个版本怎么比?
同单元、同窗口,只差版本号。跨地区比没有意义。
回滚之后还要做什么?
确认成功率回到基线,再决定是否重新放量。别在未确认时二次发布。
