• CentOS系统内存使用问题(内存是拿来用的,而不是拿来看的)


    查看内存使用:

      查看Linux服务器下的内存使用情况,可以使用命令free -m。针对于服务器内存使用过高查询和问题排查:

    参数说明:

      used:已经使用的内存数

      free:空闲的内存数

      shared:多个进程共享的内存总额  

      cacged:系统以分配未使用内存,缓存内存数

      -buffers/cache:(已用)的内存数,即used-buffers-cached

      +buffers/cache:(可用)的内存数,即free+buffers+cached

    得出结论:

      可用内存的计算公式为:

        可用内存=free+buffers+cached,即0+0+53=53

    所以:内存是拿来用的,而不是拿来看的

    清除缓存

      Linux系统的缓存机制是相当先进的,他会针对dentry(用于VFS,加速文件路径名到inode的转换)、Buffer Cache(针对磁盘块的读写)和Page Cache(针对文件inode的读写)进行缓存操作。但是在进行了大量文件操作之后,缓存会把内存资源基本用光。但实际上我们文件操作已经完成,这部分缓存已经用不到了。这个时候,我们难道只能眼睁睁的看着缓存把内存空间占据掉么?

    Linux用指令来释放缓存方法Linux用指令来释放缓存方法

      所以,我们还是有必要来手动进行Linux下释放内存的操作,其实也就是释放缓存的操作了。

    要达到释放缓存的目的,我们首先需要了解下关键的配置文件/proc/sys/vm/drop_caches。这个文件中记录了缓存释放的参数,默认值为0,也就是不释放缓存。他的值可以为0~3之间的任意数字,代表着不同的含义:

      0 – 不释放

      1 – 释放页缓存

      2 – 释放dentries和inodes

      3 – 释放所有缓存

      知道了参数后,我们就可以根据我们的需要,使用下面的指令来进行操作。

      首先我们需要使用sync指令,将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。否则在释放缓存的过程中,可能会丢失未保存的文件。

    # 释放缓存区内存的方法
    1)清理pagecache(页面缓存)
     echo 1 > /proc/sys/vm/drop_caches  or sysctl -w vm.drop_caches=1
    2)清理dentries(目录缓存)和inodes
     echo 2 > /proc/sys/vm/drop_caches  or sysctl -w vm.drop_caches=2
    3)清理pagecache、dentries和inodes
     echo 3 > /proc/sys/vm/drop_caches  or sysctl -w vm.drop_caches=3
    
    修改/etc/sysctl.conf vm.drop_caches = 3 然后sysctl -p
    root下配置调度
    10 22 * * * echo 3 > /proc/sys/vm/drop_caches
  • 相关阅读:
    bzoj 4197 寿司晚宴
    Codeforces Round #429 (Div. 2)ABC
    Codeforces Round #386 (Div. 2) E
    UESTC 电子科大专题训练 数论 L
    UESTC 电子科大专题训练 数论 E
    Codeforces Round #396 D
    UESTC 电子科大专题训练 DP-E
    UESTC 电子科大专题训练 数据结构 L
    UESTC 电子科大专题训练 数据结构 K
    UESTC 电子科大专题训练 数据结构-E
  • 原文地址:https://www.cnblogs.com/Tang-Yuan/p/14651578.html
Copyright © 2020-2023  润新知