为什么 memcached 没有使用其可用内存?

为什么 memcached 没有使用其可用内存?

我们的 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

相关内容