redis 2.8如何释放“人类最高峰”的记忆

时间:2014-06-18 02:13:25

标签: redis

因为意外事故redis内存增加了很多,我们删除了很多未使用的密钥,但是内存没有释放,有没有办法手动释放它,除了重启redis。

redis info

# Memory
used_memory:14166381000
used_memory_human:13.19G
used_memory_rss:41278218240
used_memory_peak:50044293760
used_memory_peak_human:46.61G
used_memory_lua:31744
mem_fragmentation_ratio:2.91
mem_allocator:jemalloc-3.2.0

nmon t



│ Top Processes Procs=288 mode=3 (1=Basic, 3=Perf 4=Size 5=I/O)──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────│
│  PID       %CPU    Size     Res    Res     Res     Res    Shared    Faults  Command                                                                                                │
│             Used      KB     Set    Text    Data     Lib    KB     Min   Maj                                                                                                       │
│     1732    15.9 58932952 40309580     756 58921404       0   944      9      0 redis-server   


free -m
             total       used       free     shared    buffers     cached
Mem:         64378      61914       2464          0         11         22
-/+ buffers/cache:      61879       2498
Swap:        32255      16710      15545

1 个答案:

答案 0 :(得分:2)

根据antirez https://groups.google.com/forum/#!topic/redis-db/ibhYDLT_n68(第一个答案),Redis总是使用used_memory_peak作为对它可能需要多少内存的引用(以及它想要分配多少内存)。

如果你真的需要在没有停机的情况下释放内存 - 你可以设置一个从机,让它读写CONFIG SET slave-read-only no将你的应用程序流量重新路由到从机并重新启动主机。或者继续使用奴隶(通过使其成为主人SLAVEOF NO ONE