天天看點

[1][記一次線上問題處理]服務系統時間戳不準确導緻的線上異常

【背景】

1.公司項目目前會通過接口傳回來控制前端的展示,接口吐出子產品一、子產品二、子產品三等多個子產品的樣式,前端負責渲染。後端接口如果不吐出某個子產品,前端不會異常   隻是會不展示該子產品

2.最近幾天在刷自家app的時候發現某個頁面的頂部子產品有的時候出來,有的時候不出來

【分析】

1.首先想到的是這個頂部子產品中調用的第三方接口存在問題,于是添加日志,發現日志傳回結果正常。【排除】

2.時有時無讓我想到可能是ngix出現問題,可能是ng下挂的多台伺服器狀态不一緻,于是看了一下最近釋出的記錄,發現釋出正常,沒有伺服器不一緻的狀況。【排除】

3.不死心,肯定是ngix出現問題,于是上沒太伺服器上tail日志,多次請求,發現這種異常隻出現在指定的幾台機器上。【興奮,有突破點了】

4.于是添加更加詳細的日志,發現擷取meta資訊的接口傳回異常,導緻後面拼裝子產品失敗【詫異,伺服器代碼狀态和釋出包一緻,為什麼會出現這種問題】

5.仔細掃代碼,發現擷取meta資訊的接口有一個TimeStamp的參數,查了一下接口文檔,時間戳需要和目前系統時間戳保持一緻,然後查了一下出現問題的伺服器果然系統時間戳未校準。找同僚問了一下,發現最近有擴容多台伺服器【找到問題根源】

6.最後校準系統時間戳,偶現問題消失

【總結】

1.分布式系統下,偶現問題大多下層伺服器狀态不一緻

2.開發過程中,多做校驗,運作時異常要抛出

繼續閱讀