2017-06-16 39 views
1

我有Redis实例,其最大内存设置为45GB,已用内存大约为40GB,峰值内存使用量为42GB,但RSS太高了80GB。 有什么办法可以释放这个内存。redis的used_memory_rss过高

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
76829 root 20 0 95.3g 80g 1328 R 56.4 63.8 29424:59 redis-server 

Memory 

used_memory:41960888496 
used_memory_human:39.08G 
used_memory_rss:86287454208 
used_memory_rss_human:80.36G 
used_memory_peak:46040101560 
used_memory_peak_human:42.88G 
total_system_memory:135211622400 
total_system_memory_human:125.93G 
used_memory_lua:37888 
used_memory_lua_human:37.00K 
maxmemory:48318382080 
maxmemory_human:45.00G 
maxmemory_policy:allkeys-lru 
mem_fragmentation_ratio:2.06 
mem_allocator:jemalloc-4.0.3 

回答

0

您是否有非常大的值(大于4k)?这是一个可能的原因,因为在这种情况下,jemalloc会浪费大量的内存。

长期以来,这一直是redis的问题,因为redis实际上并不能分配内存。

重启可以释放内存,但这当然不是一个好方法。

+0

4k如4KB或4k键中的散列,列表或集合? – pankaj

+0

@pankaj 4kb对于一个对象 – Solo

+0

现在我已经删除了大于4k大小的所有对象,但RSS值不会降低。 – pankaj