Redis具有非常高的碎裂率

时间:2016-08-10 11:28:54

标签: redis

我的Redis群集架构运行时的碎片率高达60。 好吗?什么应该是理想的价值?我应该怎么做才能正常?

碎片率在工作时间内降至2,而在非工作时间则高达50-60。

由于我们已将我们的登录/注销会话状态置于redis中,因此导致此问题。所以在redis db中经常插入/删除。

3 个答案:

答案 0 :(得分:1)

如果您使用的是lua脚本,并且实例上有一个小数据集,used_memory_lua可能会偏离此统计信息,因为它不包含在used_memory中,但它是< / em>包含在RSS中,因此报告的碎片率似乎太大了。

请参阅this github issue,看看您的情况是否相似。

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

答案 1 :(得分:0)

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

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

https://www.datadoghq.com/blog/how-to-monitor-redis-performance-metrics/

答案 2 :(得分:0)

使用命令内存清除功能会有所帮助。

MEMORY PURGE命令尝试清除脏页,以便分配器可以回收这些脏页。

该命令当前仅在将jemalloc用作分配器时实现,并且对所有其他命令的评估为良性NOOP。