根据this thread(不太可靠,我知道)memcached不使用磁盘,甚至不使用虚拟内存。
我的问题是:
这是真的吗?
如果是这样,memcached如何确保他被分配的内存从不溢出到磁盘?
答案 0 :(得分:4)
memcached
避免通过两种机制进行交换:
通知系统管理员机器永远不应该进行交换。这允许管理员可能不为机器配置交换空间(对我来说似乎是个坏主意)或配置正在运行的应用程序的内存限制以确保没有任何东西进入交换。 (不只是memcached
,而是所有应用程序。)
可以使用mlockall(2)
系统调用(-k
)来确保 all 进程的内存始终锁定在内存中。这是通过setrlimit(2)
RLIMIT_MEMLOCK
控件调解的,因此管理员需要修改,例如/etc/security/limits.conf
允许memcached
用户帐户锁定比正常情况更多的内存。 (调解锁定内存是为了防止不受信任的用户帐户使系统其余部分空闲内存不足。)
这两个步骤都是公平的假设机器的点是运行memcached
,也许很少。这通常是一个公平的假设,因为更大的部署会将几台(或多台)机器专用于memcached
。
答案 1 :(得分:1)
您将memcached配置为使用固定数量的内存。当内存已满时,memcached只删除旧数据以保持在限制之下。就这么简单。