![Memcached 可能泄漏内存](https://linux22.com/image/556181/Memcached%20%E5%8F%AF%E8%83%BD%E6%B3%84%E6%BC%8F%E5%86%85%E5%AD%98.png)
我遇到了一个非常奇怪的问题,我有点迷茫,因为我不知道该怎么办了。
我们在生产环境中运行 4 个专用的 memcached 盒。所有盒均有 48Gb 的 RAM,它们只运行 memcached,没有其他任何东西,守护进程的内存限制设置为 42Gb。
问题是,无论这些盒子接收到的流量和获取/设置量有多少,缓存都会填满所有 4 个盒子,大约 38Gb,但随后操作系统可用的空闲 RAM 量将在几天内开始缓慢下降,直到这些盒子开始交换,填满交换并崩溃!现在这真的很奇怪,因为盒子上没有其他东西可以填满剩余的 RAM,而 memcached 占用了 38Gb 并且没有增长(至少图表和统计数据显示如此)。
我尝试将 swappiness 设置为 0,但没有帮助。我尝试进一步降低缓存限制,但仍然得到相同的结果。
我正在运行 Centos 5.6、2.6.18-238、memcached 1.4.4 和 libevent-1.4.13-1。
你们中有人遇到过类似的问题吗?memcached 可能会泄漏内存,并且不会显示在图表或常用的 Linux 工具中吗?
谢谢! 担
答案1
Memcached可以内存泄漏(这些事情会发生),但它会显示在内存统计中。除非出现不太可能发生的内核错误,否则内存统计将是准确的。总而言之,您在诊断活动中遗漏了某些内容。收集更多数据并继续关注它。
答案2
首先,你真的有必要为 memcached 设置这么高的内存限制吗?实际上,少于 42 GB 就够了吗?