这是我要问你的问题:"mem_fragmentation_rateo“对Redis的表现有何影响?
我在stackoverflow和redis.io中做了一些调查,但我真的找不到关于我的问题的明确解释。
正如在第16页的eBook https://www.datadoghq.com/wp-content/uploads/2013/09/Understanding-the-Top-5-Redis-Performance-Metrics.pdf中所解释的,“mem_fragmentation_ratio度量给出了操作系统(used_memory_rss)所使用的内存与Redis (Used_memory)所分配的内存的比率。”
因此,正如http://redis.io/commands/INFO中所解释的,“理想情况下,Redis的值应该只比used_memory略高。当使用rss >>时,较大的差异意味着存在内存碎片(内部或外部),这可以通过检查mem_fragmentation_ratio来评估。当使用>> rss时,这意味着部分Redis内存已经被操作系统换掉:预计会有一些明显的延迟。”
因此,当我们的"used_memory“高于"used_memory_rss”时,对Redis节点的负面影响是显而易见的,因为这意味着Redis开始使用交换,这显然不利于性能。
但是,如果我们有比"used_memory“更高的"used_memory_rss”怎么办?这可能意味着我们的内存分配器没有“收回”过去分配给Redis的部分内存,并且Redis不再使用(可能是由于临时峰值)。然而,我不能理解这怎么会对Redis的性能产生负面影响。为什么我在互联网上读了这么多帖子,人们都在关注高"mem_fragmentation_ratio"?同样在我之前提到的eBook中,他们建议"mem_fragmentation_rateo“在1到1.5之间。
在这种情况下,当我们有更高的"used_memory_rss“时,Redis真的会受到影响吗?我们应该期待高"mem_fragmentation_ratio“的Redis性能下降吗?
我之所以决定问你这个问题,是因为我诚实地认为,在"mem_fragmentation_ratio“很高的情况下,我们只能在操作系统中遇到一个”可能“内存不足的问题:操作系统无法为新进程分配新的内存。无论如何,它不应该直接影响Redis (除非操作系统开始变慢,等等)。
你能澄清我的疑惑吗?你有没有经历过高的"mem_fragmentation_ratio",你开始注意到Redis的性能下降了?
谢谢
发布于 2016-11-18 00:01:49
我不是Redis专家,但根据我的经验和阅读的文档,fragmentation_ratio不会直接影响性能。但它会增加内存消耗。当您的应用程序添加新数据并且这些数据没有填充内存中的空闲片段时(当新数据束大于这些片段时),内存将保持空闲。因此,您可能会比预期的更快地耗尽内存。
https://stackoverflow.com/questions/38421604
复制相似问题