慢請求引起的連線逾時等問題是影響Tair (Redis OSS-compatible)服務品質的常見問題,Tair (Redis OSS-compatible)的慢日誌系統能夠協助您快速找到慢請求問題發生的位置,定位發出請求的用戶端IP,為徹底解決逾時問題提供可靠的依據。
功能簡介
執行個體的慢日誌會記錄執行時間超過指定閾值的請求,慢日誌分為資料節點慢日誌和代理慢日誌。
Redis開源版 2.8版本執行個體不支援查詢慢日誌功能,您可以在中查看慢日誌,但Redis開源版 2.8版本的慢日誌不支援顯示用戶端地址等資訊。
資料節點慢日誌
資料節點慢日誌中統計的命令執行時間僅包含命令在資料節點中的執行時間,不包含資料節點與代理或用戶端的通訊時間以及命令在單線程隊列上的排隊延遲等。
資料節點慢日誌的保留時間為72小時,無數量限制。
由於執行個體效能出色,通常情況下,資料節點慢日誌的數量較少。
相關參數
參數名 | 說明 |
slowlog-log-slower-than | 設定資料節點慢日誌閾值,預設為20000微秒(即20毫秒)。 說明 通常情況下您感知到的延遲實際會高於本參數設定的值,因為感知時間中包含了資料在用戶端、代理、資料節點之間傳輸和處理所消耗的時間。 |
slowlog-max-len | 設定最大慢日誌條目數,預設為1024。 |
參數設定方法請參見配置參數概述。
代理慢日誌
代理慢日誌中統計的命令執行時間從代理向資料節點發出請求開始,到代理從資料節點收到相應的回複為止,包含了命令在資料節點中的執行時間、資料在網路中的傳輸時間以及命令的排隊延遲等。
代理慢日誌的保留時間為72小時,無數量限制。
由於代理慢日誌反映的延遲與您在應用端感受到的延遲更相近,在排查執行個體逾時問題時,建議多關注此類日誌。
標準架構執行個體不提供代理慢日誌。
相關參數
參數名 | 說明 |
rt_threshold_ms | 設定代理慢日誌的閾值,預設為500毫秒。建議將該閾值配置為與用戶端逾時時間近似的值,推薦為200毫秒到500毫秒。 |
參數設定方法請參見配置參數概述。
慢日誌查看方式
|
慢日誌類型 |
查看方式 |
|
資料節點慢日誌 |
|
|
代理慢日誌 |
通過管理主控台或調用OpenAPI查看: |
操作步驟
服務逾時的原因通常比較複雜,很多情況下與慢請求相關。您可以按照下述步驟來排查逾時問題。
-
當服務出現逾時問題,首先查看代理慢日誌,詳情請參見查詢慢日誌。
說明-
如果執行個體為標準架構,請跳轉至步驟3分析資料節點慢日誌。
-
如果代理慢日誌內容為空白,您可以排查用戶端與執行個體間的網路狀況。如果確認通過外網(公網)串連執行個體,請參見本文的「排查外網(公網)串連延遲」章節。
-
-
定位最早的代理慢日誌由哪條命令引發。
說明代理慢日誌通常是因為資料節點中出現慢請求,引起命令堆積而導致的。
本案例中,最早出現的慢日誌是由一條KEYS命令產生的。慢日誌記錄中的IP地址即為使用這些命令的用戶端IP地址。
在慢日誌頁面單擊代理節點頁簽,可查看代理慢日誌記錄。本案例中,代理慢日誌表格顯示了 5 條記錄,包含 1 條
KEYS命令和 4 條SET命令,執行時間長度在 64048~88861 微秒之間。 -
查看資料節點慢日誌以確認代理慢日誌中的哪些日誌引起了逾時問題。
說明通常情況下,在代理慢日誌中最先產生慢日誌的命令,也會在資料節點產生慢日誌。資料節點的慢日誌一般比代理節點慢日誌少,這與二者對執行時間的定義以及慢日誌閾值不同有關。
本案例中,查看代理慢日誌後,再對比資料節點慢日誌,發現也存在KEYS命令產生的慢日誌,且沒有出現代理慢日誌中的其它慢日誌,說明真正引起逾時即為KEYS命令產生的慢日誌。
在慢日誌頁面單擊資料節點頁簽,可查看資料節點慢日誌記錄。本案例中,資料節點慢日誌中僅出現
KEYS命令的慢日誌記錄,其執行時間長度較長,確認該命令為導致逾時的根因。 -
在代理慢日誌中,根據上一步驟定位到的命令精確搜尋,可找到使用這些命令的用戶端IP,隨後進行最佳化。
利用慢日誌排查熱Key問題
當懷疑執行個體存在熱Key問題時,可以通過調整慢日誌閾值參數輔助排查讀請求側的熱Key。資料節點慢日誌的記錄閾值由參數 slowlog-log-slower-than 控制,預設值為 20000 微秒(20 毫秒),只有執行時間長度超過該閾值的命令才會被記錄到慢日誌中。即使某個 Key 被高頻訪問,只要單次命令的執行時間長度沒有超過預設閾值,這些讀請求也不會產生慢日誌記錄,因此預設閾值下無法通過慢日誌定位熱Key。
排查熱Key時,建議適當調低 slowlog-log-slower-than 的取值,以捕獲更多訪問記錄,再根據慢日誌中反覆出現的高頻命令定位熱Key的來源用戶端IP。
需要注意的是,審計日誌開通後僅記錄寫操作的訪問資訊,不記錄讀操作,因此無法通過審計日誌查看熱Key的讀訪問IP;如需定位讀請求側的熱Key來源,需依賴調低閾值後的慢日誌。若需要排查基於寫請求的熱Key,可參考查詢歷史熱點Key。
排查外網(公網)串連延遲
當確認執行個體服務端無效能瓶頸,但用戶端仍出現連線逾時報錯時,需排查用戶端與執行個體之間是否存在外網(公網)串連延遲問題。
問題現象
用戶端報 socket error、read error 或 connection timeout 等錯誤,但效能監控頁面顯示 CPU 使用率、記憶體使用量率、串連數指標均正常,AvgRt(平均回應時間)處於低位(微秒量級)。
問題原因
公網鏈路延遲高且不穩定,跨國訪問情境尤為明顯(例如執行個體部署在海外,業務從國內通過公網訪問)。AvgRt 僅反映執行個體側處理耗時,不含網路傳輸時間;即使服務端指標正常,公網傳輸延遲也可能導致用戶端觸發逾時閾值。
解決方案
建議按以下優先順序排查和改善:
其他排查方向
完成慢日誌和公網串連排查後仍未定位問題時,可繼續通過執行個體巡檢、效能監控以及 VPC、ECS 和應用側資訊縮小排查範圍。
使用診斷功能一鍵排查
-
在執行個體詳情頁單擊AI 執行個體巡檢。
-
全選 8 個巡檢專案後,單擊開始巡檢。
-
查看產生的巡檢報告,確認執行個體狀態、安全性、高可用、資料節點效能、代理節點效能、慢日誌、大 Key 和熱 Key、事件警示等維度是否存在異常。
查看效能監控
-
在執行個體詳情頁單擊效能監控。
-
切換到資料節點或代理節點視圖,查看 CPU 使用率、請求數(QPS)、平均時延(RT)和出入口流量速率等指標。
-
結合各節點指標判斷執行個體側是否存在效能異常。
排查 VPC、ECS 和應用側
-
在執行個體詳情頁擷取 VPC ID 和 vSwitch ID。
-
檢查出現訪問慢或逾時的 ECS 執行個體是否異常,並核對異常時間點是否與應用變更時間一致。
-
如果異常時間與應用變更時間一致,復原變更或從變更內容中排查原因;可根據 VPC ID 和 vSwitch ID 前往 VPC 或 ECS 控制台繼續排查。