Redis的Value达到1.5g

在最近的一次上线中,由于web系统逻辑出现问题,导致redis集群中某个节点内存使用量飙升。

赶紧排查……

发现原因是某个key的value值达到了1.5g,这时info Memory信息如下:

# Memory
used_memory:1793327880
used_memory_human:1.67G
used_memory_rss:1319301120
used_memory_peak:2056544368
used_memory_peak_human:1.92G
used_memory_lua:36864
mem_fragmentation_ratio:0.74
mem_allocator:jemalloc-3.6.0


# Clients
connected_clients:6
client_longest_output_list:67963
client_biggest_input_buf:0
blocked_clients:0
client_longest_output_list : 当前连接的客户端当中,最长的输出列表

client_longest_output_list  这个值也出现异常?

发现如下问题:

rss的量大于used的量,说明此时已经有value数据被交换到硬盘上了,在这种情况下,操作可能会产生明显的延迟。


赶紧让web系统回滚代码,手动del掉这个key,发现内存停止增长,但是redis的used_memory 减小的也不明显,每秒才减少0.5M左右。

为什么内存不会立即释放?

看文档上这么写的:当 Redis 释放内存时,分配器可能会,也可能不会,将内存返还给操作系统。

解决方案:重启redis,发现内存立马释放,是不是很low。


http://www.cnblogs.com/mushroom/p/4738170.html

http://www.infoq.com/cn/articles/tq-redis-memory-usage-optimization-storage/

你可能感兴趣的:(redis)