全部產品
Search
文件中心

Tair (Redis® OSS-Compatible):常見Latency(時延)事件的處理建議

更新時間:Nov 02, 2024

本文向您介紹常見Latency事件超過閾值時間的原因及處理建議,您可參考本文瞭解並處理對應的時延問題。

背景資訊

原生Redis在2.8.13版引入時延監控(Latency Monitoring)特性,基於事件機制協助您發現和排查可能的時延問題。該功能僅支援擷取最近160秒的資料,且只存取每秒內時延最高的事件。

時延洞察雲資料庫 Tair(相容 Redis)提供的升級版時延統計功能,支援記錄多達27個事件及所有命令的執行耗時,並支援儲存最近3天內所有的時延統計資料。關於各事件的詳細說明及對應閾值資訊,請參見常見特殊事件附錄

常見Latency事件

Latency事件

事件描述

常見逾時原因

處理建議

EvictionCycle

一次逐出周期的耗時,包含逐出資料的選擇、刪除操作,及後台線程等待的時間。

可能性較多,需要更進一步分析EvictionDel、EvictionLazyFree事件的耗時。

  • 檢查業務是否存在不必要的資料,並進行最佳化。

  • 擴容執行個體規格,盡量避免到達Maxmemory觸發記憶體逐出。

EvictionDel

在逐出周期中刪除Key(鍵)的耗時。

通常在逐出大Key時產生。

  • 盡量避免使用大Key。

  • 開啟lazyfree-lazy-eviction參數,使用非同步逐出模式。

  • 擴容執行個體規格,盡量避免到達Maxmemory觸發記憶體逐出。

EvictionLazyFree

在逐出周期中,等待後台線程釋放記憶體的耗時。

如果觸發逐出時沒有合格Key,且後台線程正在釋放記憶體(例如刪除大Key)時,則需要等待至後台線程釋放記憶體至Maxmemory以下或後台線程釋放記憶體結束。

  • 根據業務需求,修改maxmemory-policy參數,調整記憶體逐出策略。

  • 擴容執行個體規格,盡量避免到達Maxmemory觸發記憶體逐出。

ExpireCycle

一次清理到期Key周期的耗時。

通常在刪除大Key時產生。

  • 盡量避免使用大Key。

  • 開啟lazyfree-lazy-expire參數,使用非同步逐出模式。

  • 在控制台主動執行清理到期資料操作。

ExpireDel

在清理到期Key周期中,刪除Key的耗時。

通常在刪除大Key時產生。

AofWrite

寫入AOF(AppendOnly File)的耗時。每次成功寫入AOF檔案後,會記錄AofWrite事件以及AofWriteAlone、AofWriteActiveChild、AofWritePendingFsync三者中的一種事件。

可能性較多,需要更進一步分析AofWriteAlone、AofWriteActiveChild、AofWritePendingFsync事件的耗時。

如果對資料持久化沒有要求,建議可以關閉appendonly參數,關閉AOF持久化。

AofWriteAlone

一次正常寫入AOF檔案的耗時。

資料寫入量較大,或磁碟效能存在瓶頸。

AofWriteActiveChild

寫入AOF檔案的耗時,寫入過程中存在其他子進程也在向磁碟寫資料等情況。

寫入AOF檔案過程中,其他子進程也在向磁碟寫資料。

AofWritePendingFsync

寫入AOF檔案的耗時,寫入過程中存在後台進程正在執行fsync。

寫入AOF檔案過程中,存在後台進程正在執行fsync。

Commands

常規命令(未被標為fast)的耗時。

通常是特殊命令造成,例如執行KEYS命令,遍曆所有資料。

FastCommand

被標為fast的命令(命令的時間複雜度為O(1)和O(log N))的耗時。

通常是對大Key執行命令產生,例如執行GET命令,拷貝大量資料。

Fork

調用Fork操作的耗時。

通常在AOF Rewrite(重寫)時產生。

如果是AOF Rewrite導致,且對資料持久化沒有要求,建議關閉appendonly參數,關閉AOF持久化,關閉後,通常可以解決此類問題。

更多資訊,請參見Redis Diagnosing latency issues

相關文檔