记一次迭代中微服务的服务调用一直挂掉;

项目背景:现项目主要是做关于机器人的调度系统,涉及到web端、移动端、小程序及服务端和实体机器人端;

迭代背景:采用的敏捷开发,迭代周期为两周,本次迭代的US为机器人在地图上位置显示及路径显示,主要涉及到地图、设备状态、设备位置、电梯等状态信息展示;

记录方向:微服务的服务调用一直挂掉

记录时间:20210109

================================================

1、在敏捷开发的迭代周期中:W202053-W202102,有个微服务持续宕掉,致使测试无法进行下去;现在项目使用的微服务架构,每个模块都是一个微服务,服务与服务之间存在服务调用;

1.1、现象:有两个现象:

a、maprobot接口返回的响应报文有时候包含robotid列表,有时候没有包含robotid列表

{"resultCode":0,"message":"OK","data":{"mapSimple":[{"mapId":"7ac2eecf-785e-4108-b580-856557c05c68","mapName":"1层","organizationId":"16087082173006063"},{"mapId":"07272846-c78c-451e-b207-623e57051171","mapName":"2层","organizationId":"16087082173007021"},{"mapId":"333a22c1-a6b6-4e0a-86a6-18e97fa6cd30","mapName":"10层-5号机器","organizationId":"16087082173006110"},{"mapId":"7ac2eecf-785e-4108-b580-856557c05c66","mapName":"9层","organizationId":"16087082173005600"},{"mapId":"333a22c1-a6b6-4e0a-86a6-18e97fa6cd38","mapName":"-2层","organizationId":"16087082173004535"},{"mapId":"333a22c1-a6b6-4e0a-86a6-18e97fa6cd39","mapName":"G层","organizationId":"16087082173003752"},{"mapId":"333a22c1-a6b6-4e0a-86a6-18e97fa6cd40","mapName":"5层","organizationId":"16087082173008540"},{"mapId":"333a22c1-a6b6-4e0a-86a6-18e97fa6cd43","mapName":"8层","organizationId":"16087082173006670"}],"robotIdMapIds":[]}}

b、请求接口全部飘红,无响应数据;

1.2、原因检查

a、检查数据库是否有该地图的robotid;

b、查询日志,复现该问题;

c、其他模块功能没挂,就只有特定页面功能出现异常;

咨询过开发如果服务与服务之间的服务调用如果被调用服务出现异常或者服务调用超时的时候返回为空,所以确定是被调用服务宕掉;检查该接口的归属,发现该接口调用的的是device微服务,确定为该服务为请求报错的根源;

深入检查,发现调用该服务的时候该服务出现的了OM的情况,根因为请求history历史路径接口的时候该接口响应数据过大,导致了OM;

1.3、优化方案;

a、优化该接口的查询方案:最开始查询的方式非常粗暴,一次性查询所有的数据,先更改为小时查询,就类似于我们常用的分页查询;

b、压缩数据;

c、修改启动docke命令中的最小初始化内存,重新配置GVN参数;

1.4、优化后验收

a、优化后的效果不太理想,有时候还是会出现接口请求失败的情况;

苍天,谁来拯救一下!!!!

 

posted @ 2021-01-13 16:10  小菜鸡1枚  阅读(459)  评论(0)    收藏  举报