Linux中的内存使用量经常下降

我使用php-fpm(最新版本)运行一个运行Nginx(最新版本)的CentOS 5.6(64位)机器。 事情运行得非常好,但是从大约2个星期以来,我在我的Munin图表中注意到,大约每2个小时“caching”的用量就会下降。 在使用之前是一个稳定的完整图表,似乎没有经常重置。

PHP-FPM设置:

pm.max_children = 300 daemonize = yes pm = static listen = /tmp/fpm.sock pm.max_requests = 1000 

我已经检查了php-fpm.log,大约每5秒一次subprocess被杀死,然后重新启动。 但是这一直都是这样,所以这并不能解释突然的下降。

慕尼黑图

我只在这台机器上运行Nginx,PHP(通过fpm),Munin和vsftpd。 滴滴答答的时候没有任何crons在运行。

我的问题:什么可能导致这些下降caching使用情况?

我不确定关于CentOS 5.6,但是我的Linux 2.6.32-5-amd64在/etc/sysctl.conf添加了这一行

 vm.vfs_cache_pressure = 1 

解决了这个问题。

我认为一些大的文件是你的networking服务器的一部分是负责任的。 我猜测一个日志被旋转或压缩作为一般家务的function。 下面是一些实验,显示当一个文件被删除时,Linux转储caching的一部分,包括通过像gzip这样的工具。

 $ free total used free shared buffers cached Mem: 4054352 3867292 187060 0 75664 390788 -/+ buffers/cache: 3400840 653512 Swap: 4194300 338344 3855956 

 # echo 1 > /proc/sys/vm/drop_caches $ free total used free shared buffers cached Mem: 4054352 3420612 633740 0 292 20516 -/+ buffers/cache: 3399804 654548 Swap: 4194300 338344 3855956 

但是这可能不是发生了什么事情。 如果一个文件被删除? 还会被引用吗?

 $ dd if=/dev/zero of=cachetest bs=1M count=200 200+0 records in 200+0 records out 209715200 bytes (210 MB) copied, 0.288883 s, 726 MB/s $ free total used free shared buffers cached Mem: 4054352 3647688 406664 0 3200 240328 -/+ buffers/cache: 3404160 650192 Swap: 4194300 338344 3855956 $ rm cachetest $ free total used free shared buffers cached Mem: 4054352 3438508 615844 0 3208 35528 -/+ buffers/cache: 3399772 654580 Swap: 4194300 338344 3855956 

而且,如果我们重新加载它,然后压缩文件:

 $gzip cachetest $free total used free shared buffers cached Mem: 4054352 3439412 614940 0 3384 36404 -/+ buffers/cache: 3399624 654728 Swap: 4194300 338344 3855956 

通过把vm.zone_reclaim_mode = 0解决