一、问题分析
1.1 车云tcp长连接分析排查
在15:37:32.039上线, 在 16:07:26.527下线,车云长连接通道稳定,且该期间心跳数据正常。
1.2 云向驾仓推送数据分析
在15:37:42 进行车辆接管后,该车辆下线,且无法在上线,排查日志,15:37:32.048 时向驾仓推送36车辆, 15:37:44.928 时向驾仓推送了空车辆数据。
Dec 20, 2023 @ 15:37:32.048 VehicleListEventListener userId:63,online:["48:b0:2d:4d:69:fa"],exception:[]
Dec 20, 2023 @ 15:37:44.928 VehicleListEventListener userId:63,online:[],exception:[]
1.3 车辆接管事件分析
查询 t_parallel_vehicle 表,检索处于在线状态的车辆推送给驾仓。
二、问题原因
车辆上线时,会高频发送rtk数据,云端会根据rtk数据修改车辆的驾驶状态(手动驾驶、自动驾驶、平行驾驶)等各种状态数据,此时会查询车辆的在线状态,并将该数据修改回数据库中。
“rtk的数据操作”与“车辆在线状态”的操作发生了数据库的并发修改问题,导致了此操作把“车辆的在线状态”改成了错误的状态。
三、 修改方案
将车辆 在线状态”的修改操作单独封装,只有车辆上下线的时候进行修改。其他业务功能删除掉该状态的相关操作,避免该状态并发修改问题的发生。
四、 测试方案与结果
1)方案:
在多个弱网区域多次来回跑
2)结果:
36车经过14个弱网区域,降级6次,掉线4次,掉线后均在五秒内上线