首页 » VPS 知识 » 浏览内容

LINUX内存过高解决办法


2012-12-30 13:32:47 2,486 0 发表评论 字体: 作者:C.K.

体验版 88 元,个人版 128 元,多用户版 288元个人版160元升级到多用户版。

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

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

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

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

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

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

sync
  • sync
  • echo 3 > /proc/sys/vm/drop_caches
  • 完工了。内存已经恢复到刚开机时候的状态了。不过还是会开始慢慢上涨。

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

    脚本内容:

    #! /bin/bash
  • # cache释放:
  • # To free pagecache:
  • sync
  • sync
  • #echo 1 > /proc/sys/vm/drop_caches
  • # To free dentries and inodes:
  • #echo 2 > /proc/sys/vm/drop_caches
  • # To free pagecache, dentries and inodes:
  • echo 3 > /proc/sys/vm/drop_caches
  • 利用系统crontab实现每天自动运行:

    crontab -e

    输入以下内容:

    00 00 * * * /root/Cached.sh

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

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

    chmod +x .Cached.sh

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

      网站统计 Statistics

      • 创建时间: 2005年1月3日 距今4855 天
      • 日志总数: 2461
      • 评论总数: 630
      • 标签总数: 654
      • 链接总数: 273
      • 最后更新: 2017-7-1 18:16:33
      • 您是本站第 13459072 位访客

      广告区 Guǎng Gào