netty超時問題排查

問題一 客戶端超時主動斷開連接 nginx 499 導致客戶端接受到服務超時的返回。報錯預警突增

原因:客戶端超時時間比代理服務(backend配置超時)超時時間小,代理的後端服務超時導致調用方大量的請求報錯。

排查過程如下

1、 查看apierror.log(這裏會記錄驗證錯誤的異常) 對比報錯陡增前後 apierror中針對具體接口的報錯量是否平穩。

本次發現報錯前後apierror中報錯量並沒有大幅變化,這個問題與驗證無關。

2、 查看backend.log 發現訪問後端沒有4XX, 5XX的錯誤返回。

3、 查看.api.weibo.com/proxy/badges/badge.json 的調用正常的qps,發現抖降300,與報錯的增量吻合。

說明是我們這裏吃掉了300/s 的請求。產生問題。

4、 apierror、access.log、backend.log無明顯異常。

可以在監控中查看後端的返回平均時間是否有突增。

聯繫運維查看ng的log是否出現499。確定客戶端指定的超時時間 確定問題。 聯繫後端接口負責人解決。

5、 本次排查後加入log

 

問題二

接口偶發返回時間過長

1、客戶端配置超時時間8s,反饋偶發返回時間6s

2、查詢log沒有明顯報錯

3、查看nginx的log 發現有返回爲空 ngx狀態502

4、nginx 輪訓三臺機器前兩臺502,耗時6s

5、初步懷疑,是底層接口超時, 關閉了channl連接,並且沒有打印backend超時log()

6、連接關閉,導致程序沒有返回。接口等待服務全局的6s超時後返回空,導致nginx 502

7、 加入log,灰度,確認現象。

8、 調整backend超時時間,通知後端優化接口。

9、 ProxyIdleStateHandler 超時後不hander會處理, 超時不會走messageReceived , 走channelIdle 開始沒有打印log。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章