自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

gRPC11# 超時問題定位

開發(fā) 后端
在發(fā)布卡點過程中,有同學反饋在發(fā)布過程中存在偶發(fā)性超時情況。集中在上下游服務較多節(jié)點的服務,幾十個上百個節(jié)點的服務較多。不是必然出現(xiàn),一批服務偶爾有一個節(jié)點出現(xiàn)。

[[434974]]

一、超時現(xiàn)象反饋

在發(fā)布卡點過程中,有同學反饋在發(fā)布過程中存在偶發(fā)性超時情況。集中在上下游服務較多節(jié)點的服務,幾十個上百個節(jié)點的服務較多。不是必然出現(xiàn),一批服務偶爾有一個節(jié)點出現(xiàn)。剛出現(xiàn)的前幾例由于沒有觸發(fā)線程dump一直定位不到哪里的問題。

RPC框架中服務端線程池默認使用線程超過80%會觸發(fā)線程dump,方便觀察運行狀態(tài)。直到有兩個服務觸發(fā)了dump才把這個謎底揭開。

二、超時現(xiàn)象跟蹤

鏈路日志: 客戶端AppXXXService調(diào)用服務Appxxx發(fā)生超時,長達50秒。

服務消費方報錯信息:

客戶端等待中取消請求,發(fā)生調(diào)用時間為:2021-11-02 22:11:59.148

耗時監(jiān)控曲線:該服務基本上在同一時間段發(fā)起向下游的服務均發(fā)生超時。

服務端隊列監(jiān)控:隊列顯示瞬間增加很多任務

磁盤IO和CPU都有上升

線程dump情況,通信線程調(diào)用到了SynchronizationContext,底層的work通信線程怎么調(diào)用到了獲取節(jié)點的業(yè)務方法去了。

三、問題根因

RPC框架中代碼中有使用SynchronizationContext,此處與gRPC共用。

SynchronizationContext使用的queue是ConcurrentLinkedQueue隊列,被單線程串行執(zhí)行。

問題原因:再回到上面的線程棧,業(yè)務節(jié)點發(fā)現(xiàn)事件和gRPC底層通信共用了SynchronizationContext造成阻塞,和線程錯亂執(zhí)行。

 

問題解決:不再和gRPC共用SynchronizationContext,如果使用單獨實例化一個即可。該問題通過測試同學通過故障注入的方式得以復現(xiàn)。

 

責任編輯:武曉燕 來源: 瓜農(nóng)老梁
相關(guān)推薦

2024-11-29 07:42:47

2024-06-13 09:17:41

2024-06-04 10:37:06

2023-10-16 23:06:26

2022-09-20 10:41:32

接口優(yōu)化網(wǎng)絡

2023-03-01 10:42:58

gRPC服務端設置

2014-03-18 13:27:55

Redis數(shù)據(jù)存儲

2010-11-25 11:15:11

MySQL查詢超時

2010-10-14 09:15:20

MySQL查詢

2021-06-04 06:20:47

systemd定位工具系統(tǒng)運維

2010-01-05 09:36:40

ADO超時

2020-04-23 11:43:55

MySQL數(shù)據(jù)庫SQL

2021-07-14 18:21:38

負載均衡K8SgRPC

2018-03-01 08:56:20

存儲能力定位

2025-03-03 00:00:15

2009-03-24 10:45:39

MySQL5連接超時數(shù)據(jù)庫

2017-09-10 17:00:42

服務器數(shù)據(jù)包丟棄

2019-11-05 08:24:34

JavaOOM快速定位

2021-01-12 05:10:51

處理器AnnotationProcessor

2021-08-04 07:21:31

Hive 數(shù)據(jù)排查
點贊
收藏

51CTO技術(shù)棧公眾號