小流量灰度之所以能暴露全量发布的例外,是因为它把同一套模板、同一台服务器上的多个同ip网站拆成“先走一步”和“暂时不动”两组,让共享配置的差异在真实抓取中显形。灰度发布前,先确认哪些例外属于同一IP共享的配置,哪些属于单个站点自己的问题;前者要全量回退,后者只需局部修。
同ip网站最大的特点是共享同一套服务器配置、同一段规则文件或同一个缓存层。如果这次变更动的是共享面,灰度只能验证“配置是否生效”,不能验证“每个站点是否都适合这套配置”;如果变更只涉及某个站点的内容或模板,灰度验证的才是单站效果。
判断依据不是变更文件放在哪里,而是“改一处会不会同时影响另一站”。如果会,就按共享面处理;如果不会,就按单站处理。这个判断直接决定下一步是准备全量回退脚本,还是只准备单站修正。
小流量灰度跑起来后,不要只看流量总量,而要看同ip网站之间的差异信号。以下三类例外最容易被全量发布掩盖:
注意,抓取量下降或某项统计归零,不能单独证明是共享配置导致。它也可能来自对方站点自身调整、抓取配额波动或临时网络问题。要结合同IP下其他站点的同期表现一起看,才能区分连带影响和独立故障。
假设某IP上有A、B、C三个同ip网站,运维在共享robots.txt里新增了一条限制路径,灰度只对A站放量,B、C保持旧规则。灰度期A站抓取正常,于是准备全量。但全量后B站出现大量页面无法被抓取,原因是B站的关键目录恰好落在新增限制路径下,而A站没有这个目录。
这个例子里,灰度没有暴露问题,不是灰度机制失效,而是灰度样本没有覆盖“目录结构不同”的例外。动作上的修正是:全量前先列出同IP各站点的目录差异,把差异项纳入灰度样本;如果差异项太多,就改为按站点分批发布,而不是一次全量。这个动作的结果会直接改变下一步——要么继续全量,要么改为分批。
这里要说明一个事实边界:robots.txt的限制只约束抓取行为,不等于可靠的索引移除。即使全量后立刻改回robots.txt,已经被抓取并建立索引的页面也不会因此自动消失,仍需要按各搜索引擎支持的方式分别核查处理。
灰度跑完后,按下面顺序决定是否全量:
站点地图提交不保证收录,HTTPS也不保证安全无漏洞或排名提升,这两点不能作为全量发布后的兜底理由。真正能兜底的是:灰度样本覆盖了同IP下的主要差异,且回退路径经过验证。
如果例外只出现在一个同ip网站,且其他站点同期正常,优先按单站问题处理,改动范围小、回退代价低。如果例外出现在多个站点,且它们共享同一段规则或同一层缓存,优先按共享面处理,先回退再定位。两种选择的分界点是“改动一处是否同时影响另一站”,而不是异常出现的先后顺序。
无论选哪种,动作之后都要重新观察同IP下未改动站点的抓取与返回状态。如果未改动站点也开始出现同类异常,说明共享面仍在起作用,需要把处理范围从单站扩大到共享配置;如果未改动站点保持稳定,说明异常已收敛到单站,可以继续局部修正。这个观察结果,就是决定下一步是继续修还是整体回退的依据。