TapCub 正式上线:统计、分析、客服一个平台免费用
术语表

什么是金丝雀发布?原理、流程和示例

金丝雀发布先把新版本开放给一小部分真实用户,把它的健康状况和当前版本对比,确认没问题再逐步放量。它和 Beta 测试、蓝绿发布的区别,以及一次回滚决策的计算示例。

卢卡斯·海斯 审核人 陈屿 又称 灰度发布 最后更新 2026 年 11 月 7 日 术语表

一句话回答

金丝雀发布(Canary Release)是一种发布方式:新版本先只服务一小部分真实线上用户或流量,与当前版本对比健康指标,表现不差才继续放量,否则回滚。国内也常叫灰度发布。

公式: 金丝雀指标 ÷ 基线指标 ≤ 阈值时放量

什么是金丝雀发布?

金丝雀发布(也叫金丝雀测试,国内常称灰度发布)是先把新版本开放给一小部分真实线上用户或流量,和同时在跑的当前版本对比健康状况,确认没问题才继续放量。如果金丝雀表现更差,就把流量切回旧版本,大部分用户根本不会遇到问题。

名字来自矿工带下井的金丝雀:它们比人更早对有毒气体起反应。金丝雀那一小部分用户,就是提前报警的那只鸟。

金丝雀发布和其他发布方式的区别

方式谁先拿到新版本目的
Beta 测试主动报名、知道版本未完成的用户发布前找缺陷和易用性问题
金丝雀发布随机的一小部分普通用户,无需报名确认线上发布是安全的
蓝绿发布所有人,在两套环境之间一次切换不停机切换,出问题立即切回
功能开关放量指定用户或一定比例,按功能控制让功能的开关和代码部署解耦
A/B 测试随机分组,持续固定一段时间判断哪个版本表现更好

实际工作中这些常组合使用:代码通过金丝雀部署,里面的新功能再用功能开关逐步打开。

金丝雀发布怎么做

  1. 新版本和当前版本并行部署,两者都承接线上流量。
  2. 把一小部分流量分给金丝雀,通常 1–5%,随机分配,并且同一个用户固定在同一版本。
  3. 在同一时间窗口里对比金丝雀和基线。要和「此刻正在跑的当前版本」对比,而不是和昨天对比,这样时段和流量构成的差异就互相抵消了。Google SRE 的做法正是这种并排对比。
  4. 只看几个关键指标:错误率、延迟(p95 / p99)、App 的无崩溃用户占比,再加一两个业务信号,比如结账完成率。
  5. 分步放量(比如 5% → 25% → 50% → 全量),一旦越过阈值就自动回滚。

示例:放量还是回滚?

示例数据:金丝雀占 5% 流量,观察一小时。事先定好的规则:金丝雀错误率超过基线的 1.2 倍就回滚。

请求数错误数错误率
基线(当前版本,95%)190,0005890.31%
金丝雀(新版本,5%)10,000420.42%

比值 = 0.42 ÷ 0.31 = 1.35,超过 1.2 的阈值,金丝雀回滚。受影响的只有 5% 的用户、一个小时。还要注意:金丝雀这一小时只有 42 个错误;如果只给 1% 的流量,大约只有 8 个,根本分不清是问题还是噪声。金丝雀的比例要保证每个观察窗口里有足够多的事件可供判断。

移动端:分阶段发布

App 装到用户手机上就没法回滚,所以应用商店提供了「金丝雀」机制:

  • 苹果分阶段发布:对开启自动更新的用户,在 7 天内按 1%、2%、5%、10%、20%、50% 直至全部用户逐步推送更新,期间累计可暂停最多 30 天。
  • Google Play 分阶段发布:按你选择的比例发布,可以逐步提高,发现问题可以暂停。
  • 国内安卓市场多数也支持灰度或按比例发布,原理相同。

对比方法一样:在同样的几天里,看新版本和上一版本的无崩溃用户占比、错误数。

常见坑

  • 和过去比,而不是和正在运行的基线比。
  • 金丝雀太小,窗口里攒不够事件。
  • 只看技术指标:一个版本可能零报错却把结账弄坏了,至少加一个业务护栏指标。
  • 分配不固定,同一个用户在一次访问中来回切换版本。
  • 金丝雀拖太久,变成没人规划过的长期分流。

用 TapCub 衡量金丝雀发布

TapCub 不负责部署代码或分配流量,它负责衡量结果。

  • App:应用统计 › 用户分析 › 版本分布 显示每个版本的活跃用户占比和崩溃数;应用统计 › 质量与归因 › 稳定性 按版本筛选,给出无崩溃用户占比。参见无崩溃率和跟踪 App 版本。
  • 网站:性能报表显示 JavaScript 错误数和错误率(错误数 ÷ 浏览量)。参见查找 JavaScript 错误。
  • 告警:用内置的 error_rate 或 errors 指标建一个监控,发布导致错误超过阈值时通知你;再加一个图表标注,在所有图上标出这次部署。

资料来源

这个解释清楚吗?

我们会根据反馈修改和补充这篇内容。

卢卡斯·海斯

数据工程师

聚焦事件设计、数据质量与采集流程,分享可验证的实施方法,帮助团队建立可靠的分析基础。

常见问题

常见追问

大家看完定义后最常问的几个问题。

还有其他问题?

直接和 TapCub 团队聊聊——工作日通常几小时内回复。

为什么叫金丝雀发布?

过去矿工会带金丝雀下煤矿,金丝雀比人更早对有毒气体起反应。金丝雀发布先让少数用户用上新版本,问题在波及所有人之前就暴露出来。

金丝雀发布和蓝绿发布有什么区别?

蓝绿发布一次把全部流量从旧环境切到新环境,出问题再一次切回来;金丝雀发布逐步放量,并把两个版本放在一起对比。

金丝雀应该分多少流量?

通常先给 1–5%,再按 10%、25%、50% 直至全量逐步放量。比例要大到能在观察窗口内产生足够多的请求和错误,否则看不出差别。

金丝雀发布和 A/B 测试是一回事吗?

不是。两者都分流量,但金丝雀问的是「新版本能不能安全发布」,A/B 测试问的是「哪个版本的业务指标更好」。

在你自己的网站上看这个数字

加一行脚本就能开始,网站和 App 都能接,几分钟内就能看到第一批报表。

看清数据,找到增长。

每一次点击,都有数据依据。装好一行代码,1 分钟看到第一批数据。

无需信用卡 · 统计与客服都有免费版 · 统计无 Cookie