导航

清理系统缓存

Posted on 2019-01-30 14:21  ricks  阅读(348)  评论(0编辑  收藏  举报

清理系统缓存
当服务器内存使用率高达90%以上时,且有较大耗内存操作时,可以考虑把系统的垃圾内存清理掉。方法如下

 echo 3 > /proc/sys/vm/drop_caches

~ # free
      total    used       free     shared      buffers
Mem:   155728    119840      35888      176       28
-/+ buffers:        119812      35916
Swap: 0 0 0
~ # echo 3 > /proc/sys/vm/drop_caches
~ # free
    total    used       free   shared   buffers
Mem: 155728   65828   89900   176      0
-/+ buffers:        65828   89900
Swap: 0 0 0

 -----------------------------------------------------------

哪里有过大?cached 和 buffers 占据 available 部分中的绝大部分是正常的。你说你的内存,free 着就是什么用处都没有,但你以为那些部分就不需要通电、刷新吗?

cached 通常属于 available 部分(该数据 3.14 内核之后提供,procps-ng 较新版本也显示),也就是可用内存。什么时候程序需要了,什么时候拿去用。暂时不需要?那我从磁盘那个慢到死的家伙里好不容易读出来的数据先留着,指不定用户还要用到呢。

有兴趣可以 echo 3 到那什么文件/proc/sys/vm/drop_caches清空一下这些部分,然后 ls /usr/lib 试试。然后立即再执行一次,是不是有缓存之后就快多了?

至于 sync 命令。它和 cached 有关,但是不是你所想的那个功能。它的功能是,把脏页写回磁盘,也就是把修改过的数据还没写到磁盘的数据写到磁盘上。因为内核会延迟提交,每次提交多积累一些数据,以提高效率、降低延迟。没有使用的必要,只会让系统卡一下而已。