老夫子刚关上电脑,系统提示音又响了。他皱眉点开弹窗,一行红字跳出来:【核心模块响应异常,错误代码417】。
他立刻抓起外套往技术区走。走廊灯还亮着,门虚掩着,里面传出键盘敲击声。几个中方技术人员在屏幕前盯着数据流,脸色不太好看。
“怎么了?”老夫子问。
技术部小李抬头,“上线测试半小时后开始掉线,每十五分钟断一次,像是定时被踢。”
“查日志了吗?”
“查了。后台没报错,但前端反馈连接中断。我们怀疑是本地网络协议不兼容。”
话音未落,门又被推开。三位国际合作伙伴的技术人员走了进来,领头的是个戴黑框眼镜的男人,手里抱着一台测试机。他们没说话,直接把机器放在桌上,打开后台界面。
对方工程师指着一段通信记录说:“我们复现了问题。不是网络问题,是你们的认证握手流程,在我们的防火墙策略下会被判定为异常请求。”
小李马上反驳:“可这套流程在国内运行三年都没事,参数也没改过。”
“环境不同。”眼镜男语气平静,“你们的时间戳用的是UTC 8,而本地系统默认识别UTC 2,偏差六小时。任务调度队列对不上,自然会被清出队列。”
会议室一下安静了。
老夫子走到白板前,拿起笔画了个流程图。他一边画一边说:“也就是说,不是程序崩了,是时间对不上,导致系统以为我们在发假请求。”
对方点头。
老夫子转头对小李说:“马上调后台时间配置项,改成自动识别地理区域并校准时区。别再硬编码了。”
“可是……”小李犹豫,“这得重写调度逻辑,至少要八小时。”
“那就八小时。”老夫子把笔拍在桌上,“客户已经开始试用了,不能等明天。”
他掏出手机拨通行政组电话:“今晚所有人加班,餐食送到会议室,咖啡按双倍量准备。”
挂了电话,他看向双方团队:“从现在起,每两小时同步一次排查进展。中方负责后台调整,外方模拟本地网络环境做压力测试。有问题当场提,别憋着。”
没人反对。
会议桌重新摆成U形,两边人各自落座。中方打开代码编辑器,外方接上测试仪。老夫子站在中间,看着两边人开始操作。
凌晨两点,第一轮测试失败。
系统刚启动十分钟,边缘设备再次断连。外方工程师摇头:“认证机制还是被拦截。这次不是时间问题,是签名密钥长度不符合本地安全标准。”
小李一拍脑门:“忘了这事!国内允许1024位,这边要求至少2048位。”
“重生成密钥对。”眼镜男说,“然后更新证书链。”
“这得重启服务,影响正在运行的节点。”中方另一名程序员提醒。
“影子模式。”老夫子突然开口,“新旧系统并行跑,拿真实流量做对比测试。不影响用户,又能验证效果。”
外方三人互看一眼。眼镜男问:“你们有现成的分流脚本?”
“没有,但可以写。”老夫子看向小李,“你来牵头,他们配合。现在就开始。”
小李点头,手指飞快敲击键盘。另一边,外方工程师递过一份文档,是本地安全规范的技术附录。两人凑在一起看,时不时低声讨论。
老夫子泡了两杯茶,放在他们手边。没人抬头,也没人道谢,但其中一杯很快见了底。
三点十七分,脚本完成。
四点零三分,新系统接入测试通道。
四点二十六分,首次完整通信成功。
整个会议室没人喊,但有人轻轻拍了下手。小李长出一口气,靠在椅背上揉眼睛。
老夫子盯着监控面板。稳定运行已持续四十分钟,所有指标正常。
“继续盯住。”他说,“先别松劲。”
五点十二分,边缘设备突然报警。
一条红色提示跳出:【终端无法获取动态配置】。
小李猛地坐直:“刚才还好好的!”
外方工程师快速检查日志,摇头:“不是我们这边的问题。你们的配置推送服务没响应。”
“不可能!”小李调出后台,“服务明明在线!”
老夫子凑过去看屏幕。日志显示配置中心一直在发送指令,但接收端始终无反馈。
他忽然想到什么,翻出抽屉里的小本子——陈博士送来的那份。他快速翻页,找到一处手写备注:“本地DNS缓存周期较长,建议增加心跳包频率。”
他把本子递给小李:“看看这个。”
小李读完,一拍大腿:“明白了!我们的心跳间隔是三十秒,但他们这边DNS刷新是六十秒,中间有空档。设备以为服务断了,自动下线。”
“改。”老夫子说,“把心跳包改成十秒一次,再加一个UDP广播作为备用探测。”
“会影响服务器负载。”小李提醒。
“扛得住。”老夫子看着时间,“离天亮还有两个多小时,必须搞定。”
本小章还未完,请点击下一页继续阅读后面精彩内容!