从昨天开始,我们的 redis 服务器逐渐(200MB/小时)使用更多的内存,而键的数量(330K)和它们的数据(132MB redis-rdb-tools)保持不变。
redis-cli info 的输出显示 6.89G 已用内存?!
redis_version:2.4.10
redis_git_sha1:00000000
redis_git_dirty:0
arch_bits:64
multiplexing_api:epoll
gcc_version:4.4.6
process_id:3437
uptime_in_seconds:296453
uptime_in_days:3
lru_clock:1905188
used_cpu_sys:8605.03
used_cpu_user:1480.46
used_cpu_sys_children:1035.93
used_cpu_user_children:3504.93
connected_clients:404
connected_slaves:0
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
used_memory:7400076728
used_memory_human:6.89G
used_memory_rss:7186984960
used_memory_peak:7427443856
used_memory_peak_human:6.92G
mem_fragmentation_ratio:0.97
mem_allocator:jemalloc-2.2.5
loading:0
aof_enabled:0
changes_since_last_save:1672
bgsave_in_progress:0
last_save_time:1403172198
bgrewriteaof_in_progress:0
total_connections_received:3616
total_commands_processed:127741023
expired_keys:0
evicted_keys:0
keyspace_hits:18817574
keyspace_misses:8285349
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:1619791
vm_enabled:0
role:slave
master_host:***BLOCKED***
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
db0:keys=372995,expires=372995
db6:keys=68399,expires=68399
当我们将(.net)客户端代码从 BookSleeve 1.1.0.4 更新到 ServiceStack v3.9.71 以准备升级到 Redis 2.8 时,问题就开始了。但是很多其他的东西都更新到了而且我们的会话状态存储(也是redis,但使用harbor客户端)没有表现出相同的症状。
Redis 的所有内存都去哪儿了?如何解决它的使用问题?
编辑:我刚刚重新启动了这个实例,内存恢复到 350M,现在又开始爬升了。前 10 个最大对象的大小仍然相同,从 100K 到 nr 1 的 25M 不等。键的数量已下降到 270K(之前为 330K)。