今天把一个业务的redis使用从一个集群切换到另外一个集群,上线后发现目标集群一个比较有意思的现象。
目标集群内存容量持续上升,这个在意料之中。
同时发现碎片率同时在持续下降,这个是之前没想到的。
查一下究竟是为啥。
了解了一下:
used_memory: redis当前数据使用的内存,有可能包括SWAP虚拟内存。
used_memory_rss: redis当前占用的物理内存,包括内存碎片。
mem_fragmentation_ratio:used_memory_rss/used_memory , 此值很重要,当mem_fragmentation_ratio <1 时,说明used_memory > used_memory_rss,这时Redis已经在使用SWAP,运行性能会受很大影响。通常在正常情况下,该值比1大一些。参考自《Redis系列专题》之 Redis性能,掌握这些方法不可少!
碎片率的计算是 = redis向操作系统申请的内存(used_memory_rss)/redis实际分配出去的内存(used_memory)。
新迁移过来的业务会占用一部分新内存,而由于新上,这部分碎片率基本上等于1,所以把整体的碎片率往下拉了一个层次,整体曲线往下走。