全部產品
Search
文件中心

Tair:常見Latency(時延)事件的處理建議

更新時間:Jun 30, 2024

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

背景資訊

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

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

時延洞察ApsaraDB for 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

相關文檔