2014-02-26 111 views
2

我的笔记本电脑只有8GB内存,我试图压力测试我的应用程序,它严重使用Redis。当我看着INFO输出,我无法弄清楚如何使用内存可以是31.83GB。 Rdb转储只有300 MB。阅读Redis信息

# Memory 
used_memory:34177666096 
used_memory_human:31.83G 
used_memory_rss:412901376 
used_memory_peak:34175483600 
used_memory_peak_human:31.83G 
used_memory_lua:31744 
mem_fragmentation_ratio:0.01 
mem_allocator:libc 

问题:

为什么RDB转储是如此之小,used_memory_human是如此之大?如何识别实际的内存使用情况(INFO显示不同的内容)?

回答

5

Redis不会在内存和磁盘上使用相同的数据表示形式。每一个都经过优化。内存中表示针对访问速度进行了优化,而磁盘上的表示则减少了磁盘空间使用量。所以你不能比较文件的大小和使用的RAM。

used_memory/used_memory_human是由libc分配给Redis的内存。因为它比used_memory_rss大得多,这是操作系统所看到的大小,这意味着您的系统正在交换,所以您应该会遇到一些性能问题。

+0

+1指出过度使用。 –