来源映射重建完成后,星辰没有立刻宣布新日期。
最后一条映射在四月六日凌晨恢复。周成按下保存时,林岚先核站点编号,苏雨桐再抽了五十条结果。五金店老板把原定三月三十一日吃的两瓶汽水从柜子里取出来,发现早已跑气,又原样放回去。
“恢复完不等于能上线。”苏雨桐说。
老板叹气:“我就知道这两瓶还得再放。”
苏雨桐提出,把恢复后的系统跑满十万次查询。
不是让十万人同时来。
而是用过去一年匿名保存的真实查询分布,加上错别字、长句、拼音、人名、热点词和重复提交,组成一套可以重复回放的压力集。
十万次分三轮。
回放数据装满七卷磁带。每卷由两个人核摘要,装进不同颜色的盒子,红色跑容量,蓝色跑质量,绿色跑故障。林岚担心顺序混淆,给盒盖各剪了不同形状的缺口,即使机房光线不好也能摸出来。
第一轮验证结果是否与冻结版本一致。
第二轮验证八十并发下的容量与拒绝策略。
第三轮在运行中故意切断一台机器,检查备机、日志和恢复手册。
周成负责容量。
苏雨桐负责质量抽检。
林岚负责恢复。
马飞只看汇总,不允许自己成为任何一步必需的人。
第一晚,他还是习惯性站到周成身后。林岚提醒汇总桌在门外,马飞才端着搪瓷杯出去。他在走廊坐了三个小时,除了签停测决定,不进机房指挥具体恢复。
值班员看他来回踱步,递来一份报纸,说总师在门外也不会让磁带转快一点。马飞坐下,看了半版便又从头看,什么也没读进去。
第一轮在第两万三千次时发现差异。
同一查询在两个版本上返回的前十条顺序不同。
原因不是算法。
恢复后有一批页面的抓取时间被写成重建时间,排序中的时效因子因此把旧内容当成新内容。
受影响最明显的是一份1995年的软件目录,恢复后忽然排到当年更新页面前面。普通校验只证明文件一字不少,用户看到的顺序却已经变了。苏雨桐把它列为“完整但不等价”,新增语义抽查,不再把恢复理解成能开机就算结束。
如果只检查文件摘要,所有数据都完整。
语义却变了。
团队停下测试,修改恢复程序,确保保留原抓取时间。
第二次从零开始。
十万次全部清零让周成最心疼。前三万次已跑了七个小时,不能从故障点接着算,因为恢复程序本身改变了结果。五金店老板问能不能把前面三万“打个折”留下,林岚把那卷磁带封进失败档案,标签写明仅用于复盘,不计正式次数。
第六万一千次,查询队列达到上限。系统正确拒绝新请求,却在繁忙页面里丢失了原查询文本。用户等待后必须重新输入。
这不影响服务器稳定。
却让失败成本全部落在用户身上。
周成给繁忙页面增加短期令牌,容量恢复后可以重新提交原查询,不保存身份信息,也不无限延长。
令牌第一版含完整查询文本,机房重启后会落进临时日志。苏雨桐要求改成短期随机编号,查询只在内存里保留,十五分钟自动失效。用户能少输一次,星辰却不能借便利无限保存内容。
三名高校测试者盲用后,一人误以为令牌是排队号码,等待二十分钟才发现失效。周成把提示改成明确的剩余时间,第二轮三人都能完成重试。
第三次从零开始。
第八万七千次,主查询进程被人工停止。
备机在九秒内接管。
林岚根据手册确认版本、编码表和来源映射,二十三分钟后恢复主机。周成全程没有开口。
十万次结束时,机房里没有欢呼。
最后一个请求返回时是早上六点十二分。打印机卡了一次纸,林岚关机重装,谁也不肯用手把半张统计硬拽出来。苏雨桐靠在墙边吃前一夜剩下的馒头,周成盯着拒绝数,眼睛红得像发炎。
打印机缓慢吐出统计。
失败请求三百二十一条,其中二百九十四条得到明确繁忙提示并可重试。
百分之九十五查询在二点八秒内返回。
五百条人工样本前十平均相关得分十四点八,比故障前低零点一。
差异来自新加入的公开页面,其中几组重复摘要尚未完全合并。
“过不过?”马飞问。
苏雨桐没有看总分。
她翻到按类别统计的页面。
人名查询下降零点四。
明确题名提高零点二。
长句基本不变。
“可以发布。”她说,“但人名下降要进已知问题,不能用平均分藏掉。”
周成原以为十四点八低于冻结前十四点九会被继续推迟。苏雨桐指出发布条件从来不是所有指标只能升,而是类别退步必须可解释、有记录且不越过底线。人名问题被列进首页已知事项,修复不能靠删掉那组样本。
马飞在批准栏签字,没有把零点一改成“四舍五入持平”。
周成把容量问题也列进去:
八十并发是稳定上限。
超过上限会明确拒绝。
不是无限承诺。
发布日期定在四月十六日。
比原计划晚十六天。
媒体预告不再写“中国最大”或“国内领先”。
只写:
星辰搜索正式开放。
收录范围、质量方法、商业信息规则和已知问题可查。
十万次查询没有证明系统不会失败。
林岚把三轮失败磁带与最终统计分开放,正式结果盒上有四个人签名。顾海峰借来的空白带已经写入第二份异地备份,应付款凭证也夹在里面。
马飞撕下一张新挂历纸,只写四月十六日和七个空格。五金店老板拿出那两瓶没气的汽水,建议这次别再留到最后。大家一人分了半杯,喝起来像甜水。
第一个空格在当天夜里被划掉。机房状态正常,人名查询仍挂在已知问题页上。