linux内存cached释放

原创
2015/11/13 13:39
阅读数 84

背景:在公司测试服务器上搭建JavaWeb运行容器时,发现服务器上的内存8G,上面就运行了两个服务,但是使用free -m命令,查看剩余内存是就剩下240+M,感到十分的奇怪,开始猜测是原来上面的服务产生的日志太多缓冲,占了很多的,我就将服务器上的日志都全部删除了,发现也才释放到了1.5G,执行看了下free -m,仔细的看了上面的信息,发现其中一项 cached ,占用了5G的内存。

    1.下面我说明一下free -m 出现的结果参数说明 。

         total : 物理内存的总大小 (也就上面说的8G)

         used :已经使用的内容 

         shared:共享的内存大小

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

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

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

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

          2.解决方案(有三种方法(命令行)释放那些 cached) 

               <1>. echo 1 > /proc/sys/vm/drop_caches

               <2>. echo 2 > /proc/sys/vm/drop_caches

               <3>. echo 3 > /proc/sys/vm/drop_caches

          3.总结

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


展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
在线直播报名
返回顶部
顶部