貼子詳情介面偶發時延超過2s的問題

2022-03-02 21:58:10 字數 866 閱讀 4907

1. 發現問題

1. 查詢慢access日誌,發現偶爾有介面時延超過2s,傳送概率1%左右

2. 排查

1. 寫單元測試,多次測試後,不能重現問題

2. 介面**裡加日誌,每隔一行**加一次日誌,等待重現

3. 不斷往上游介面加日誌後,發現耗時在獲取榜單top10的介面

4. top10介面是從資料庫獲取top50的使用者,然後通過多協程到redis裡面獲取使用者資訊

5. 發現從資料庫獲取資料時,沒索引,加上索引後,問題依然存在

6. 再次加日誌後發現耗時在多協程到redis裡面獲取使用者資訊

7. 耗時細節:

1. 介面共用時2.1s(正常只用0.2s)

2. 獲取日榜,10個使用者,0.01s

3. 獲取週榜,50個使用者,0.8s

4. 獲取總榜,50個使用者,0.6s

5. 再次獲取總榜,50個使用者(快取不能命中,不知道為什麼。不能命中是偶發),0.6s

8. 原因分析:

1. 只需要獲取前10,但是獲取了前50

2. 上層業務只需要id,但是下層獲取了使用者資訊,無謂操作,同時加劇了第一點

3. 優化方案:

1. 從資料庫獲取前10

2. 只獲取id,不獲取使用者資訊

3. 獲取id後,加一層快取

4. 原來的介面改為連表獲取使用者資料

4. 學習

1. 多協程下,任務量較大情況下(大於20),訪問redis,有概率出現慢的情況。具體原因待分析。(最後定位到是rediscluster庫的問題,在redis服務端超時斷口連線後,客戶端會進行初始化,而且多協程下沒有鎖)

1. 數量大的情況下(大於20),多次訪問redis io,還不如連表從資料庫獲取資料

商品詳情介面

思路1 根據檢視 商品詳情.md 介面文件,組裝商品詳情vo 思路2 確定dm item consumer微服務工程 思路3 介面output中的資訊包含了三張表 商品資訊 dm item 資訊 dm image 劇院資訊 dm cinema 思路4 查詢商品資訊思路 通過入口引數商品id獲取 思路...

精華貼子整理

行列轉換 總結帖子 經典帖子 合併分拆表 果果字串整理系列 處理表重覆記錄 ssas系列 過渡到ssas之一 簡單模型認識 過渡到ssas之二 服務的發布 和尚翻譯的ssrs的帖子 ssis系列 小梁系列之ssis遍歷記錄查詢郵件 小梁系列之ssis表示式 小梁系列之ssis 查詢元件 查詢範圍內的...

1688天貓京東等介面詳情

1688api介面分享資訊如下 item get 獲得1688商品詳情 是 item search 按關鍵字搜尋商品 是item search img 按圖搜尋1688商品 拍立淘 item search suggest 獲得搜尋詞推薦 是 item fee 獲得商品快遞費用 是 seller in...