memcached
通过两种机制避免进入swap:
向系统管理员告知这些机器不应该进入swap。这使得管理员可以不为机器配置swap空间(这对我来说似乎是个坏主意),或者配置正在运行的应用程序的内存限制,以确保没有东西会进入swap。(不仅仅是 memcached
,而是所有应用程序)。
可以使用mlockall(2)
系统调用(-k
)来确保所有进程的内存始终锁定在内存中。这是通过setrlimit(2)
的 RLIMIT_MEMLOCK
控制来实现的,因此管理员需要修改例如/etc/security/limits.conf
以允许memcached
用户账户锁定比正常情况下更多的内存。(锁定的内存是受到调节的,以防止不受信任的用户帐户使系统剩余的自由内存不足。)
这两步骤都是公平的假设这台机器的目的是运行memcached
,并且可能几乎没有其他用途。这通常是一个合理的假设,因为更大的部署将专用于几台(或许很多)机器运行memcached
。
您可以配置memcached使用固定的内存量。当内存已满时,memcached会删除旧数据以保持在限制范围内。就是这么简单。