Linux内存cached释放
Eave
2017.09.12 14:02
在Linux中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然。这是Linux内存管理的一个优秀特性,在这方面,区别于Windows的内存管理。主要特点是,无论物理内存有多大,Linux 都将其充份利用,将一些程序调用过的硬盘数据读入内存,利用内存读写的高速特性来提高Linux系统的数据访问性能。而Windows是只在需要内存时,才为应用程序分配内存,并不能充分利用大容量的内存空间。换句话说,每增加一些物理内存,Linux都将能充分利用起来,发挥了硬件投资带来的好处,而Windows只将其做为摆设,即使增加8GB甚至更大。
Linux的这一特性,主要是利用空闲的物理内存,划分出一部份空间,做为cache、buffers ,以此提高数据访问性能。
页高速缓存(cache)是Linux内核实现的一种主要磁盘缓存。它主要用来减少对磁盘的I/O操作。具体地讲,是通过把磁盘中的数据缓存到物理内存中,把对磁盘的访问变为对物理 内存的访问。
磁盘高速缓存的价值在于两个方面:第一,访问磁盘的速度要远远低于访问内存的速度,因此,从内存访问数据比从磁盘访问速度更快。第二,数据一旦被访问,就很有可能在短期内再次被访问到。
total used free shared buffers cached
Mem: 1.9G 1.9G 65M 544K 23M 73M
-/+ buffers/cache: 1.8G 162M
Swap: 3.9G 1.2G 2.6G
参数说明:
total:物理内存的总大小
used:已经使用的内存
free:剩余内存
shared:共享的内存大小
buffers:缓冲区内存:(磁盘块的读写频繁,linux内存机制做缓冲池)
cached:也是缓冲区内存(主要是在文件读写频繁的时候对文件进行缓存)
一般我们主要看free,和最后一行 buffers/cache
编辑/var/www/scripts/drop_caches.sh文件
#!/bin/bash
date +"%Y.%m.%d %H:%M:%S"
/bin/sync
echo 3 > /proc/sys/vm/drop_caches
sleep 1
echo 0 > /proc/sys/vm/drop_caches
/usr/bin/free -h
最后在定时任务中添加
# 定时清除Linux的cache
0 5 * * * /var/www/scripts/drop_caches.sh >> /tmp/drop_caches.log 2>&1