記一次網絡質量原因導致接口調用超時的調查過程


現象:

某個線上接口調用存在較多超時

 

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