LINUX内存过高解决办法

林继 VPS 知识 3,123 共写了831个字 (2012-12-30 13:32:47) 没有评论 打印 扫描二维码 百度未收录

平常用习惯WINDOWS下的,刚开始用Linux常常会被内存使用过高吓倒,占用率接近百分百,这是在window情况下几乎不敢想的事情。

反正你不管多大内存,在linux下总会给你用光。

可以这么理解:在linux的内存分配机制中,优先使用物理内存,当物理内存还有空闲时(还够用),不会释放其占用内存,就算占用内存的程序已经被关闭了,该程序所占用的内存用来做缓存使用,对于开启过的程序、或是读取刚存取过得数据会比较快。

查看目前进程正在实际被使用的内存,是used-(buffers+cache),也可以认为如果swap没有大量使用,mem还是够用的,只有mem被当前进程实际占用完(没有了buffers和cache),才会使用到swap的。

其实都是无所谓的,只要不是支撑非常庞大的HTTP,内存到达顶峰时候机器会自动开始排泄。

如果需要手工释放内存命令如下:

  1. sync
  2. sync
  3. echo 3 > /proc/sys/vm/drop_caches

完工了。内存已经恢复到刚开机时候的状态了。不过还是会开始慢慢上涨。

如果觉得麻烦可以用脚本:

脚本内容:

  1. #! /bin/bash
  2. # cache释放:
  3. # To free pagecache:
  4. sync
  5. sync
  6. #echo 1 > /proc/sys/vm/drop_caches
  7. # To free dentries and inodes:
  8. #echo 2 > /proc/sys/vm/drop_caches
  9. # To free pagecache, dentries and inodes:
  10. echo 3 > /proc/sys/vm/drop_caches

利用系统crontab实现每天自动运行:

  1. crontab -e

输入以下内容:

  1. 00 00 * * * /root/Cached.sh

每天0点释放一次内存,这个时间可以根据自己需要修改设置

在运行./Cached.sh时如果提示错误:Permission denied 权限的问题,可以运行:

  1. chmod +x .Cached.sh

此外还可以通过修改/etc/sysctl.conf的方法来达到自动释放缓存的目的。但是内存不够用,最好还是去找找其他的原因,比如程序设置是否合理,是否突发访问量很大,或者程序设计不合理导致内存溢出等,毕竟操作系统本身设计会考虑各方面的问题,强制腾出cache的大小,可能只是把问题给暂时屏蔽了,不利于判断问题的所在。

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

< >