1. 程式人生 > 資料庫 >處理Redis產生的記憶體碎片

處理Redis產生的記憶體碎片

Redis 中有專門的引數設定用來進行自動清理記憶體碎片:activedefrag yes。

這個命令是啟動清理功能的,這還不夠,Redis 中還需要其他的條件限制才能夠進行清理。

下面引數都是滿足任一條件後就可以進行清理:

active-defrag-ignore-bytes 100mb:碎片達到100MB時,開啟清理。

active-defrag-threshold-lower 10:當碎片超過 10% 時,開啟清理。

active-defrag-threshold-upper 100:記憶體碎片超過 100%,盡最大清理。

在處理的過程中,為了避免對正常請求的影響,同時又能保證效能。Redis 同時還提供了監控 CPU 佔用比例的引數,在滿足以下條件時才會保證清理正常開展:

active-defrag-cycle-min 5:清理記憶體碎片佔用 CPU 時間的比例不低於此值,保證清理能正常開展。

active-defrag-cycle-max 75:清理記憶體碎片佔用 CPU 時間的比例不高於此值。一旦超過則停止清理,從而避免在清理時,大量的記憶體拷貝阻塞 Redis,導致其它請求延遲。