降低 maxmemory 後,redis 仍然有高 RSS 記憶體
我希望 Redis 返回一些記憶體。我將 maxmemory 降低了 10GB,但注意到 Redis 在基於“used_memory_rss”的 RSS 中仍然“堅持”。基於http://redis.io/topics/memory-optimization,看起來 Redis 不會將記憶體返回給作業系統。我該如何強制?有沒有辦法在不重新啟動 Redis 的情況下做到這一點?
我有同樣的問題,這個答案很有幫助。
即使 Redis 不再使用記憶體,分配器還沒有將記憶體釋放回作業系統。Reds v4 有一個**
MEMORY PURGE
**命令告訴分配器釋放它不使用的記憶體,但不幸的是,這在 v3.2 上不可用。
可以即時重新配置 redis,但在下次重新啟動之前不會重新讀取配置文件。為此,您必須使用
CONFIG
命令更改值。來自 http://redis.io/topics/config 的片段
在伺服器執行時更改 Redis 配置可以在不停止和重新啟動服務的情況下即時重新配置 Redis,或者使用特殊命令 CONFIG SET 和 CONFIG GET 以程式方式查詢目前配置並非所有配置指令都以這種方式支持,但大多數都按預期得到支持。有關詳細資訊,請參閱 CONFIG SET 和 CONFIG GET 頁面。請注意,即時修改配置對 redis.conf 文件沒有影響,因此在下次重新啟動 Redis 時將使用舊配置。確保還根據您使用 CONFIG SET 設置的配置修改 redis.conf 文件。你可以手動完成,或者從 Redis 2.8 開始,你可以使用 CONFIG REWRITE,它會自動掃描你的 redis。conf 文件並更新與目前配置值不匹配的欄位。不添加不存在但設置為預設值的欄位。保留配置文件中的註釋。
如果這不起作用並且您有一個從屬伺服器,您可以與他們玩一個 shell 遊戲並減少從屬伺服器上的記憶體,重新啟動它,將其提升到主伺服器並減少原始主伺服器上的記憶體並重新啟動它。