2017-06-16 37 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