Oli*_*uby 9 fragmentation memory-usage redis
我有一个 Redis 3.0.5 实例,随着时间的推移,它往往会显示 mem_fragmentation_ratio 的增长。
使用该实例的应用程序不断地创建和删除密钥。
一个月后,我的结果是 mem_fragmentation_ratio > 1.30。这会影响 Redis 在该服务器上的内存占用:
~$ redis-cli info memory
# Memory
used_memory:7711297480
used_memory_human:7.18G
used_memory_rss:10695098368
used_memory_peak:11301744128
used_memory_peak_human:10.53G
used_memory_lua:95232
mem_fragmentation_ratio:1.39
mem_allocator:jemalloc-3.6.0
Run Code Online (Sandbox Code Playgroud)
如果我重新启动 Redis 服务并从 AOF 重新加载,mem_fragmentation_ratio 会回到可接受的水平 (1.06):
~$ redis-cli info memory
# Memory
used_memory:7493466968
used_memory_human:6.98G
used_memory_rss:7924920320
used_memory_peak:8279112992
used_memory_peak_human:7.71G
used_memory_lua:91136
mem_fragmentation_ratio:1.06
mem_allocator:jemalloc-3.6.0
Run Code Online (Sandbox Code Playgroud)
回收 Redis 正在影响我们的应用程序(即使我们在从服务器重启后使用 Sentinel 故障转移来执行此操作)。
是否有另一种方法可以减少 mem_fragmentation_ratio,例如我可以安排非高峰期的“碎片整理”过程?
小智 8
内存碎片是一个重要的问题。
在 v4 之前,解决它的唯一方法是重新启动进程(可能在创建从属设备、提升它并将流量重定向到它之后)。从 v4 开始,有一个实验性的主动内存碎片整理机制,可以通过一个简单的CONFIG SET activedefrag yes
.
归档时间: |
|
查看次数: |
8452 次 |
最近记录: |