今天在做zabbix硬件监控的时候,老是出现段错误的提示,仔细检查发现原来是是不是我的内存不够了呢:

关于linux内存cached过高释放一例_缓冲区

参数说明:

total : 物理内存的总大小

used :已经使用的内容

shared:共享的内存大小

buffers:缓冲区内存:(磁盘块的读写频繁,linux内存机制做缓冲池)

cached:也是缓冲区内存(主要是在文件读写频繁的时候对文件进行缓存)

一般我们主要看free,和最后一行 buffers/cache:


具体参数可以参考,linux 内存机制。我的机器上面是做nagios监控,和图片备份,每天晚上12点会有rsync的任务执行,同步图片到这台机器上面。应该是这个问题了,频繁的读写文件,然后触发了Linxu的内存机制,系统任务频繁的读写文件,当程序停止之后。系统内存没有释放,而是当做cache的形式存在,方便下次调取。这样性能应该有所加强,但是像今天这种我又不需要,那么我就只能将他释放了:


执行操作:

关于linux内存cached过高释放一例_缓冲区_02

执行命令完成之后我们可以echo 0 修改回来。

可以看到已经释放了很多内存了。


总结:我们有时候经常会遇到这个问题,尤其是Mysql服务器,经常buffers,经常会占据很多的内存,因为mysql写入操作是很频繁了,这个时候我们不用去手动释放内存,允许linux自带的内存去管理,可想而知当我们缓冲区有内存了,下次读写是不是很快了呢。今天实在暂用太多了,而且rsync也是晚上,才启动,关闭就不用浪费那么多资源