zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    some tips
    ORA00847: MEMORY_TARGET/MEMORY_MAX_TARGET and LOCK_SGA cannot be set together
    Chapter 01Overview of Oracle 9i Database Perfomrmance Tuning
    Chapter 02Diagnostic and Tuning Tools
    变量与常用符号
    Chapter 18Tuning the Operating System
    标准输入输出
    Trace files
    DBADeveloped Tools
    Chapter 03Database Configuration and IO Issues
  • 原文地址:https://www.cnblogs.com/Tang-Yuan/p/14651578.html
Copyright © 2011-2022 走看看