半地下室不适合承诺在线服务。
九月的一场大雨把这个判断变成了水。
秋天一场大雨后,墙角返潮,最下面一箱打印纸吸了水。电压在晚上连续波动,稳压电源报警了七次。电话线虽然没有断,却发出细碎杂音。
五金店老板先发现纸箱发软,叫周成一起搬。两人抬到一半,箱底裂开,几百张旧测试表散在湿地上。苏雨桐赶来后按编号铺开晾,马飞用电风扇吹了整夜,仍有三十多张粘在一起。
没有数据丢失,纸面原件却留下水印。铁柜上层一直用来放合同,测试档案被挤在下面;所谓安全备份只防水管滴漏,没防整面墙返潮。
两台机器仍在运行。
这反而更危险。
只要它们没有彻底坏掉,人就容易把侥幸当成稳定。
马飞找到一家提供服务器托管的网络服务公司。机房有双路电源、空调、固定线路和夜间值班,最便宜的机柜位置每月一千八百元。
这个数字超过半地下室房租的五倍。
机房销售带他们看了一圈。空调吹得人发冷,地板下是成束线缆,值班桌上有两只泡面碗。周成最喜欢双路电源,五金店老板陪着来,只盯住灭火器有没有过期。
销售说在线率可以保证百分之九十九,马飞问剩下百分之一怎么计算、计划维护算不算。对方拿来正式合同,里面写的是“尽力保障”。一千八百元买到的是环境和线路,不是免除星辰自己的故障责任。
还不包括线路流量和现场维护。
周成建议只把查询服务器搬过去,抓取和索引仍留在办公室。
苏雨桐同意,但要求先做故障边界。
如果半地下室断电,线上查询应继续使用最后一版完整索引。
如果机房服务器故障,必须能在另一台机器上恢复。
如果两地复制中断,不能把半份索引标成新版本。
他们给每次索引生成一个编号。
周成第一次实现“可发布”标记时,只检查文件数量。苏雨桐从其中一个分片删去一百字,数量不变,测试照样通过。第二版增加摘要;马飞又故意换入旧分片,摘要正确但版本不一致。直到编号、数量、摘要和来源清单四项同时匹配,机房脚本才接受。
五金店老板看他们反复破坏自己的索引,问好机器为什么总要先弄坏。周成说不先在眼前弄坏,迟早会在看不见的地方坏。
构建完成后先校验文件数量和摘要,再写入“可发布”标记。机房只接受带标记的完整版本。复制失败时继续使用旧索引,不追求表面上的最新。
第一次搬迁安排在周六凌晨。
星辰提前一周向七所高校发出通知,说明服务将中断四小时。陈维明看见通知,问:“不能悄悄搬吗?四小时很难看。”
“如果顺利,可能只停一小时。”
“那为什么写四小时?”
“因为最坏情况下要把机器搬回来。”
实际中断用了五小时十二分。
凌晨一点,机房里只剩空调和风扇声。兼容网卡买回来前,马飞和机房值班员轮流坐在门口台阶上吃包子。值班员把自己的辣酱分给他,说这一带三点以后连热水都不好找。
周成骑车往返中关村,裤脚卷到小腿,三点零七分抱着网卡进门。第一次驱动加载仍报错,他没有赌重启,换备用槽位重新测试。五点十二分,七所高校的健康检查全部返回绿色。
新机房的网卡与服务器驱动冲突,第一次启动后无法稳定传输。周成临时回中关村找兼容网卡,凌晨三点才装好。
服务恢复时,天已经亮了。
马飞没有修改原通知。
他追加了一份故障记录:
计划四小时。
实际五小时十二分。
原因是兼容性验证不足。
改进措施是为关键替换部件建立预检清单。
机房值班员看到他打印的表,问:“你们每次都写这么细?”
“以前不是。”
“大公司也未必写。”
“所以他们出问题时也会忘。”
搬迁后的第一个月,星辰搜索在线率达到百分之九十八点七。
月报发出去后,高老师回信说图书馆恰好撞上两次中断,体感远没有九十八点七那么好。星辰把不可用时间按学校常用时段重新计算,白天在线率反而更低。之后的维护尽量放到夜间,仍保留全天数字,不用调时段把月报变漂亮。
那不是值得自豪的数字。
换算下来,仍有近十小时不可用。
其中一次是索引复制占满磁盘通道,一次是程序内存泄漏,还有两次是机房线路调整。
团队第一次轮流承担夜间联系。
值班人不能只写“重启恢复”,必须记录告警、判断、动作和结果。第二天由另一人复核,避免一个疲惫的人同时成为故障执行者和唯一解释者。
半地下室里空出一张桌子。
机器的噪声少了,房间反而显得更冷。
马飞把机房钥匙放进带编号的信封,登记借出时间。
第一周值夜班轮到苏雨桐,凌晨两点机房打来电话,说线路调整提前。她从学校宿舍跑到传达室接回电,要求对方按合同保留变更时间。第二天,她把这次十七分钟抄进故障表,没有因为不是星辰造成就删掉。
空出的桌子被擦干,湿过的测试表重新装盒,架到离地最高一层。墙上原先贴服务器的地方只剩四个螺丝孔,房间安静得能听见楼上拨算盘。
马飞把机房钥匙封进编号信封,今天借给谁、几点归还,第一行由他自己签。