分析:网页请求发起时,为何无故出现延迟(排查记录)

今天群友A出现了一个迷惑性很强的问题,表现是(如上图所示):

网页请求发出时无故出现了300毫秒的延迟,最初怀疑是网络问题。

然而群友A尝试使用postman测试该接口,却一切正常:

因此排除了后端和网络的问题。(注意TCP Handshake 这部分,postman显示0.39毫秒)

此前有群友B看法是,应该是握手阶段出了问题:

但我感觉不像。(事实证明我错了)

我建议群友A从axios开始排查,一层一层的,往下查,甚至浏览器内核都怀疑过,换了浏览器再进行测试,结果仍然如此。

这时,群友A提出了一个新的疑点:这个问题,只有第一次请求(既发起握手时)时间长,第二次就不会出现了。

这个时候我理应怀疑握手阶段有问题了,但我没有。(太蠢了)

随后群友说,这个问题是间隔出现的,也就是第一次有延迟,第二次没有,第三次有延迟,第四次没有,以此类推。

这其实已经很明显了,但我的思路已经歪了(因为一开始就排除了),我甚至一度怀疑是不是数据封包的时候,出了什么问题,导致了延迟。

排查进入了死胡同,众人一筹莫展,这时,某位潜水多时的群友C,一语惊醒梦中人:

我顿呼:卧槽,还真有道理。

但此时思路还没扭过来,我又觉得奇怪,但是这个延迟是间隔出现的,如果只有第一次请求出现延迟后续请求都没有延迟,那应该就是这个问题没错了,可为什么......

这时,群友A恍然大悟:

想想还真是,如果nginx那边为了节省性能,配置了非常短的keepalive的话,就会出现连接刚建立没多久,就会断开,然后下次请求又要重新建立的情况。

群友A之所以感觉这个问题是间隔出现,只是因为他发起两次请求后,连接刚好就断开了。

至此终于破案,众人啼笑皆非,没想到一个看起来非常奇怪的,让我百思不得其解的问题,其实只是因为一个小小的配置项引发的。

还是太年轻了。

这个案例分享给大家,共勉吧,哈哈哈。


觉得这篇文章有用的朋友可以给我点个赞,收藏一下,尤其是修炼搬山诀的道友,你搬就搬吧好歹给哥们点点赞。

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

顺德陈奕迅_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值