我在外包的日子23:清明节后几个问题的处理

清明节前,为了加快二期系统的测试进度,我和罗工借了电动汽车到了三个场站,将修改后的兼容中间件更新了,现场测试无问题后,心想可以安心休息了。

节后,一大堆问题出现,有同事提议以后不要在节前更新版本了。在此事上,我们达成高度一致。

某场站网络时断时连

假期第一天,正在家里写代码,电脑右下角邮箱不断收到异常的邮件——因为很早就加了网络连接异常的警告邮件到生产环境中了。根据ID判断是那一场站——且只有该场站。鉴于位置不高,就静待同事的通知。不久,同事在群里叫我有空时排查一下。我观察日志,得出结论,90%概念是设备问题,不是路由器网络问题或中间件问题。因为同一个服务进程,其它场站未出现此现象。然后就不知同事如何处理了。

上班第一天,同事说要不去那边看看吧。我也有此意,于是向甲方公司借车,和罗工讨论到那边如何着手排查问题——谋定而后动,是我一向的风格。于是写了socket测试程序,放到生产环境。翌日中午,打完饭没吃就去借车,直奔目的地。到达后,向门卫表明身份来意,就到充电员值班室看网线、交换器,一切正常。开电脑,跑程序,连接正常。到设备屏幕查看,有几个设备的IP地址变成一样的了,IP冲突,造成设备轮流离线现象,验证了之前猜测。打电话给甲方经理,汇报情况,建议厂家工程师来排查。然后吃饭,等待。
甲方说厂家工程师说手动改IP,我不想干,于是就叫充电员改。之后观察正常了。充电员说昨天得到消息,厂家也会来。但等了一下午,没人来。于是在4点多就去另一个场站排查问题。

之后,问题又复现了,和甲方经理汇报,对方说,已经停止该场站的运营。

问题原因:设备断电后,一些参数会被恢复。乃设备程序的问题。

某场站某部分车无法充电

车上接到群里消息,某场站一部分车无法充电。请示甲方经理,调一辆无法充电的车过来,我们到现场后,车也到了,改端口,加打印,插枪充电,观察到的确没有充电。细查log,该车不在白名单中,添加之,可充。定位到原因。后沟通发现,元旦新来一批车,都不是我手上代码的白名单,——我手上的是去年年底拿到的。原来,甲方有一份,同事有一份,我有一份,三者都不一致,后来拿到三份,写代码对比,发现少了几百辆车。添加后,重启服务,暂未发现问题。一期代码没有版本管理,所以后续还可能会继续出现此类问题。

另外一个无法充电问题应该是设备问题,因为看到厂家工程师在调试。我也凑过去观摩学习,不过不认识,只打探他们设备在全国都有很大的市场。

某场站某种车型订单号无记录

下班路上,收到群里消息,清明假期订单没有回传后台。翌日上班,排查,发现一共有9天时间没有订单,兹事体大,没有订单信息,就对不上数目,甲方肯定会投诉。要在他们未发觉之前恢复数据。时间紧,问题未明,但急也没用。加打印,在本地测试,发现序列号只有一个“0”,原来新系统为了方便,将序列号统一改为0,与旧系统机制不同。于是询问同事,然后修改,完成后,更新生产环境,骑电驴,到现场,找辆车,恰好司机不在,停电改端口,再插枪,等一会,停电,后台有订单。问题解决。恢复端口,再重启正式服务。观察半小时,正常。到下班时间,打卡回家。

但缺失的订单,还是要想办法恢复。拿log,写了个简单的程序,解析字段,转换成旧系统的字段,根据开始时间转成时间戳,因为没有毫秒,使随机数生造出来这番。发送post到后台,看到订单,此方法可行,于是全部恢复。前后花了大半天时间。由于订单数目多,没细对,但愿甲方没发现异常。

李迟 2019.04.12 周五