算法團(tuán)隊(duì)的代碼在客戶線上部署后,任務(wù)偶發(fā)會(huì)失敗,業(yè)務(wù)日志中會(huì)出現(xiàn)Timeout等網(wǎng)絡(luò)超時(shí)的關(guān)鍵字。
將解決網(wǎng)絡(luò)超時(shí)問(wèn)題的思路流程記錄如下。
場(chǎng)景
經(jīng)測(cè)試發(fā)現(xiàn),線上算法測(cè)試時(shí),會(huì)有異地不同節(jié)點(diǎn)間頻繁且大數(shù)據(jù)量的交互。
并發(fā)量
任務(wù)失敗時(shí),qps數(shù)在個(gè)位數(shù)。數(shù)據(jù)包大小
可能存在幾十M甚至上百M(fèi)的數(shù)據(jù)包。通信鏈路
A方算法->B方客戶nginx->B方客戶入口網(wǎng)關(guān)—>B方服務(wù)網(wǎng)關(guān)->B方算法服務(wù),
其中A方往B方傳大文件有幾率強(qiáng)制斷開(kāi)。
從上述測(cè)試中,失敗時(shí)的并發(fā)量不高,但是數(shù)據(jù)包較大且網(wǎng)絡(luò)不穩(wěn)定。
處理方案:
- 超時(shí)重試
http調(diào)用在出現(xiàn)超時(shí)等異常時(shí)進(jìn)行三次重試。 - 數(shù)據(jù)分片
在http調(diào)用前新增前置處理層,將超過(guò)10M的數(shù)據(jù)包進(jìn)行壓縮以及分片;在接收方進(jìn)行合并再解壓。 - 檢查設(shè)置鏈路超時(shí)時(shí)間和包大小
檢查全鏈路上nginx、tomcat等服務(wù)的默認(rèn)超時(shí)時(shí)間和傳輸文件大小限制,適當(dāng)調(diào)大。