算法团队的代码在客户线上部署后,任务偶发会失败,业务日志中会出现Timeout等网络超时的关键字。
将解决网络超时问题的思路流程记录如下。
场景
经测试发现,线上算法测试时,会有异地不同节点间频繁且大数据量的交互。
并发量
任务失败时,qps数在个位数。数据包大小
可能存在几十M甚至上百M的数据包。通信链路
A方算法->B方客户nginx->B方客户入口网关—>B方服务网关->B方算法服务,
其中A方往B方传大文件有几率强制断开。
从上述测试中,失败时的并发量不高,但是数据包较大且网络不稳定。
处理方案:
- 超时重试
http调用在出现超时等异常时进行三次重试。 - 数据分片
在http调用前新增前置处理层,将超过10M的数据包进行压缩以及分片;在接收方进行合并再解压。 - 检查设置链路超时时间和包大小
检查全链路上nginx、tomcat等服务的默认超时时间和传输文件大小限制,适当调大。