Redis的碎片率非常高

Redis的碎片率非常高,redis,Redis,我的Redis群集体系结构以高达60的高碎片率运行。 好吗?理想值应该是什么?我该怎么做才能让它正常 在工作时间内,破碎率降低至2,而在非工作时间,破碎率高达50-60 由于我们在redis中设置了登录/注销会话状态,因此导致了此问题。因此,redis db中经常会有插入/删除操作。如果您使用lua脚本,并且实例上的数据集很小,使用的内存\u lua可能会扭曲此统计数据,因为它不包含在使用的内存中,但它包含在RSS中,因此报告的碎片率似乎太大了 看看你的情况是否相似 您可以使用命令清除缓存的lu

我的Redis群集体系结构以高达60的高碎片率运行。
好吗?理想值应该是什么?我该怎么做才能让它正常

在工作时间内,破碎率降低至2,而在非工作时间,破碎率高达50-60


由于我们在redis中设置了登录/注销会话状态,因此导致了此问题。因此,redis db中经常会有插入/删除操作。

如果您使用lua脚本,并且实例上的数据集很小,
使用的内存\u lua
可能会扭曲此统计数据,因为它不包含在
使用的内存中,但它包含在RSS中,因此报告的碎片率似乎太大了

看看你的情况是否相似


您可以使用命令清除缓存的lua脚本
SCRIPT FLUSH

碎片比率大于1表示正在发生碎片。比率超过1.5表示碎片过多,您的Redis实例消耗了它请求的150%的物理内存。碎片比率低于1表示Redis需要的内存比系统上可用的内存多,这会导致交换。交换到磁盘将导致延迟显著增加(请参阅已用内存)。理想情况下,操作系统将在物理内存中分配一个连续段,其碎片比率等于1或稍大

如果服务器的碎片率高于1.5,重新启动Redis实例将允许操作系统恢复以前因碎片而无法使用的内存。在这种情况下,作为通知的警报可能就足够了


使用命令内存清除应该会有所帮助

内存清除命令尝试清除脏页,以便分配器可以回收这些脏页


当前仅当使用jemalloc作为分配器时才执行此命令,并且对所有其他命令的计算结果都是良性NOOP。

这会给您带来任何问题吗?“我应该怎么做才能使其正常?”-我建议减少插入/删除次数。:)不,这不会引起任何问题。但我们处于初始水平,只有很少的数据进入redis。所以我很想了解原因。Redis为我们管理登录会话状态。所以每次登录/注销都会有insert/delete。可能有意思吗?在本页末尾讨论“内存分配”。但是我没有使用Lua脚本。