问题形容

最近上了一版需要,其中有一个接口因为后端的计算量超级微小,导致接口工夫要达到七八秒能力返回对应后果。

上了生产环境当前,申请总是失败。

测试环境是好好的...

查看控制台申请发送的报文相干信息如下:

笔者看一下报文,发现申请的状态从开始的pending期待到最初的canceled勾销。

点开申请的Timing面板查看,发现申请卡在Connection StarInitial connection中央不往下走了。

Initial connection是建设TCP连贯的意思,笔者不禁考虑,为啥好好的申请,TCP连贯连不上了啊,也是一脸懵。

于是,笔者去百度如何解决Initial connection过慢失败问题,发现网上的帖子七嘴八舌,如:可能是一个域名下挂着两个ip、如:可能是域名解析DNS问题之类的等...

与此同时,后端共事也在看如何优化本人的接口,让接口返回疾速一些...

前后端就这样各自钻研了一下午。

解决方案

其实一开始方向就错了,不应该看Initial connection超时就认为是什么环境域名导致TCP连贯不上(公司测试环境是ip生产环境是域名),导致TCP连贯不上的起因有很多。

其中有一点就是前端限度了超时工夫,导致了TCP没工夫去进行连贯、去进行三次握手四次挥手,所以最终的解决方案是:

前端放开超时工夫axios中的timeout超时工夫限度

既然这个申请会达到七八秒,那么这个就将超时工夫设置为16秒,这样的话,工夫足够用了。

import axios from "axios";const http = axios.create({    timeout: 16000 // 给予接口足够的工夫})

这样设置当前,发现,问题解决

第一张图是失败的超时勾销的申请,再附上一张胜利的不超时的申请