记一次网络质量原因导致接口调用超时的调查过程


现象:

某个线上接口调用存在较多超时

 

1、进一步分析排查现象:

通过外网压测一个HTTP接口,当报文内容较大时,有较多请求出现超时

通过内网压测则没有该情况

 

2、打开http报文记录到日志功能

发现部分报文的content-length比实际body长,并且正常body应该是个json串,问题报文的body是一个不完整的json串(没有 "}" )

引发问题:

A、为什么content-length比实际body长会导致超时

B、为什么body json串不完整

 

对于问题A:

通过阅读源码发现,由于content-length比实际body长,服务端程序阻塞在读RequestBody相关代码处,而且请求是keep-alive请求,继而超时

 

对于问题B:

通过抓包发现,当一个报文较长时,被分成了很多帧发出,部分帧发送失败,重发又晚于服务端程序规定的超时时间,会导致超时

解决方案:换网络质量好云服务运营商 | 减小报文大小尽量控制在一帧内(去掉协议头大约1460个字节)

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM