我们的 memcached.conf 有以下指令:
-m 7168
服务器有 8GB 的 RAM。然而,尽管使用率很高,内存使用量从未超过 2GB:
# free
total used free shared buffers cached
Mem: 8178532 2067308 6111224 0 109092 434916
-/+ buffers/cache: 1523300 6655232
Swap: 0 0 0
我们遗漏了什么?
答案1
通常,即使您指定了最大限制,memcached 也只会使用其所需的内存。它不像 Linux 系统缓冲区那样,可以根据设计扩展以填充所有可用内存,以提高系统性能。
您可以 telnet 到您的 memcache 并发出命令
stats
stats slabs
stats malloc
这应该可以让您了解您的 memcache 中有多少个不同大小的对象以及它们占用了多少内存。
如果 memcached 没有足够的内存来存储所有对象,它将逐出较旧的对象,这将增加 返回的“逐出”计数器slabs
。如果“逐出”为 0,则表示您的 memcache 有足够的内存。
您可以在“memcached 速查表”中找到许多其他有用的命令和解决方案http://lzone.de/cheat-sheet/memcached