我的Redis集群架构存在高达60%的碎片率。这是好的吗?理想值应该是多少?我应该怎么做才能让它恢复正常?
在工作时间内,碎片率会降低到低至2%,而在非工作时间时则高达50-60%。
这个问题是由于我们将登录/注销会话状态放在Redis中造成的。因此,Redis数据库中频繁进行插入/删除操作。
我的Redis集群架构存在高达60%的碎片率。这是好的吗?理想值应该是多少?我应该怎么做才能让它恢复正常?
在工作时间内,碎片率会降低到低至2%,而在非工作时间时则高达50-60%。
这个问题是由于我们将登录/注销会话状态放在Redis中造成的。因此,Redis数据库中频繁进行插入/删除操作。
used_memory_lua
可能会使这个统计数据失真,因为它没有包含在used_memory
中,但它包含在RSS中,所以报告的碎片率似乎过高。请参见this github issue,看看您的情况是否类似。您可以使用命令SCRIPT FLUSH
清除缓存的Lua脚本。使用命令memory purge应该会有所帮助。
MEMORY PURGE命令尝试清除脏页,以便分配器可以回收它们。
只有在使用jemalloc作为分配器时才实现了此命令,并且对于所有其他命令,它都被评估为无害的NOOP。