2015-11-03 373 views
1

我们在Redis服务器中设置了120 GB最大内存。Redis的used_memory_rss比配置集'maxmemory'多?

所以在信息输出used_memory总是比等于少120GB,但used_memory_rss是140GB〜

有人能请解释的原因呢?

+0

这是因为内存在运行时被碎片化。 –

+0

但是为什么它超过120.操作系统不应该为'maxmemory'中定义的Redis进程提供更多的内存。如果它试图给,OS本身可以去OOM。 –

+0

我只是想了解为什么它比定义的参数'maxmemory'多。 在我的理解中,Redis不应该使用超过'maxmemory'的内存,因为我们已经将95%的内存分配给了Redis进程。 –

回答

2

已使用的内存总量包括Redis在数据存储之外使用的任何内存,特别是在磁盘持久性操作(如BGSAVE和AOF重写)期间使用的各种缓冲区和内存。 maxmemory设置的数量为数据允许(并包括一些缓冲区,如客户端缓冲区) - 不是整个系统内存。

当您到达maxmemory Redis将停止允许通过数据命令增加内存使用量。但是,除此之外,还可以自由地使用内存来处理其他任务。