对于磁盘IO比较大的服务器,运行一段时间发现可以内存非常低
free -m
发现buff/cache占用非常高,而且没有释放。
在网上很多文章建议通过下面的命令来手动释放占用的空间
sync
echo 1 > /proc/sys/vm/drop_caches
但是这个方法只能暂时解决空间占用的问题,也可以通过AT指令来周期执行这个命令来释放空间
另一种是通过系统参数来解决,该参数强制系统预留多大的空闲空间
vm.min_free_kbytes = 836787 #1G
原理是kswapd 进程监视free空间,如果小于min设定的值,那么kswapd 进程启动,释放buff/cache空间,这个时候系统将会hold住,如果IO比较频繁的话可能会引起卡顿。
可以根据自己的实际情况来设定这个参数的大小。