Linux 计算机上无法解释的缓存 RAM 下降

Linux 计算机上无法解释的缓存 RAM 下降

我运行一台 CentOS 5.7 64 机器,配备 24gb 内存,运行内核 2.6.18-274.12.1.el5。

该机器仅运行 Nginx、php-fpm 和 Xcache 作为额外应用程序。

大约 3 周以来,这台机器的内存行为发生了变化,我无法解释原因。没有运行任何 cron 来刷新此类内容。在这些丢失数据期间也没有删除/更改大量文件。

“缓存”内存每隔几个小时就会丢失一次,但刷新之间从来没有固定的间隔,这对我来说表明达到了某个瓶颈。当总内存使用量达到约 18GB 时似乎总是如此,但同样,并不总是正好是 18GB。

这是我的内存使用情况的图表:在此处输入图片描述

正如您在图中所看到的,“缓冲区”总是保持不变,主要是“缓存”被丢弃了。

运行后vmstat -m我输出了内存下降前后的内存使用情况。输出如下:http://pastebin.com/diff.php?i=hJqZqztm'旧版本' 表示删除之前,'新版本' 表示删除之后。

大约 3 周前,我的服务器在一次严重的 DDOS 攻击中崩溃了,在我重启机器后,这种奇怪的行为就开始了。我检查了大量日志,再次重启了机器,却找不到任何迹象表明发生了什么变化。

在这些“缓存”内存下降期间,我的 iNode 使用率也会同时下降。

在此处输入图片描述

有人知道是什么原因导致此行为吗?显然我的 RAM 没有满,所以我很好奇为什么会发生这种情况。

答案1

锯齿状提交内存图是什么意思?

当连接被 accept() 时,套接字会创建 inode,因此 inode 行为可能分别来自大量连接的打开或关闭。当(如链接问题中所述)logrotate 终止大量 FastCGI 进程时,可能会发生这种情况。不确定这是否适用于 php-fpm。

这只是一种荒谬的理论,并没有真正解释为什么缓存会同时被清除。不过,还是值得一看的吧?

答案2

通过将 vm.zone_reclaim_mode = 0 解决

相关内容