【问题标题】:Redis: How is "mem_fragmentation_ratio" impacting the performance?Redis:“mem_fragmentation_ratio”如何影响性能?
【发布时间】:2016-07-17 13:11:42
【问题描述】:

这是我的问题:“mem_fragmentation_rateo”如何影响 Redis 的性能?

我在 stackoverflow 和 redis.io 中做了一些调查,但我真的找不到关于我的问题的明确解释。

正如本电子书 https://www.datadoghq.com/wp-content/uploads/2013/09/Understanding-the-Top-5-Redis-Performance-Metrics.pdf 第 16 页中所解释的,“mem_fragmentation_ratio 指标给出了操作系统所使用的内存 (used_memory_rss) 与 Redis 分配的内存 (used_memory) 的比率。”

因此,正如http://redis.io/commands/INFO 中所解释的,“理想情况下,used_memory_rss 的值应该仅略高于 used_memory。当使用 rss >> 时,较大的差异意味着存在内存碎片(内部或外部),可以评估通过检查 mem_fragmentation_ratio。当使用 >> rss 时,意味着部分 Redis 内存已被操作系统交换掉:预计会有一些明显的延迟”。

所以,当我们的“used_memory”高于“used_memory_rss”时,对Redis节点的负面影响是显而易见的,因为这意味着Redis开始使用Swap,这显然不利于性能。

但是,如果我们的“used_memory_rss”比“used_memory”高呢?这可能意味着我们的内存分配器没有“收回”过去分配给 Redis 的部分内存,并且 Redis 不再使用(可能是由于临时峰值)。但是,我不明白这会对 Redis 性能产生怎样的负面影响。为什么我在互联网上阅读许多帖子,人们如此关注高“mem_fragmentation_ratio”?同样在我之前提到的电子书中,他们建议将“mem_fragmentation_rateo”设置在 1 到 1.5 之间。

在这种情况下,当我们有更高的“used_memory_rss”时,Redis 真的会受到影响吗?我们是否应该预期“mem_fragmentation_ratio”较高时 Redis 性能会下降?

我决定问你这个问题,因为老实说,我认为,在“mem_fragmentation_ratio”很高的情况下,我们可以“仅”在操作系统中遇到问题,“可能”会遇到内存不足的问题:操作系统不能t 为新进程分配新内存。无论如何,它不应该直接影响 Redis(除非操作系统开始变慢等)。

你能澄清我的疑问吗?您是否有过“mem_fragmentation_ratio”过高的情况,并且您开始注意到 Redis 的性能下降?

谢谢

【问题讨论】:

    标签: redis amazon-elasticache


    【解决方案1】:

    我不是 Redis 专家,但根据我的经验和阅读的文档,fragmentation_ratio 不会直接影响性能。但它会增加内存消耗。 当您的应用程序添加新数据并且该数据未填充内存中的空闲片段时(当新数据束大于这些片段时),该内存将保持空闲状态。因此,您可能会比预期更快地耗尽内存。

    【讨论】:

    • 一般来说,由于swap是在物理内存耗尽后才使用的,所以只要分片后used_memory_rss小于物理内存,swap一开始就不应该使用吧?
    猜你喜欢
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    • 2018-11-16
    • 2012-01-11
    • 2011-01-08
    • 2015-05-29
    • 1970-01-01
    相关资源
    最近更新 更多