【问题标题】:Is a hard restart of redis required to free memory?是否需要硬重启 redis 才能释放内存?
【发布时间】:2017-09-25 06:38:55
【问题描述】:

我最近遇到了一个SO question,操作员询问redis 在哪些场景中释放内存。似乎他们被建议硬启动是一种潜在的方式,但是在 redis 的情况下这是未经测试的。谁能让我确定这是否有效?

我有一个实时环境,我不想重新启动 redis-server,但它的内存占用现在正在衰弱,我正处于服务器迁移的边缘。所以对我来说,尽可能多地消除臃肿是很重要的(而且有很多臃肿)。

【问题讨论】:

    标签: memory-management redis


    【解决方案1】:

    我不确定您所说的“膨胀”是什么意思,但附加服务器的 INFO ALL 输出可能会有所帮助。

    默认情况下,Redis 使用 jemalloc 作为内存分配器。在 Redis 释放 RAM 后,分配器负责实际释放 RAM 以供操作系统回收。 Redis v4 及更高版本包括强制分配器清除已释放 RAM 的功能(MEMORY PURGE,请参阅https://github.com/antirez/redis-doc/pull/851)。

    不管清除,还有内存碎片的问题。虽然 v4 具有实验性的主动碎片整理功能,但重新启动是在以前版本中“修复”该问题的方法。

    为了减少重启和所涉及的停机时间,请使用 Redis 的复制创建一个从属服务器,并将您的应用故障转移到它,然后再重启原始主服务器。

    【讨论】:

    • 没什么太神秘的,“膨胀”我只是说我有一堆不再使用的钥匙。
    • 啊 - 要么更严格 w。管家和/或使用 TTL :)
    • 从未说过更真实的话
    猜你喜欢
    • 2019-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多