• linux 手工释放内存 高内存 内存回收 方法思路


    linux  跑的apache,apache工作模式有   Prefork、Worker和 Event  三种,分别是基于进程、线程、综合模式。

           本文中使用的apache是 Event  模式,在访问量上来之后,linux服务器总共60G的内存占用持续升高,于是将内存容量扩大,升高至120G。经过一段时间后发现,内存占用继续升高,几乎将120G占满,网站访问速度急速下降,页面打开时间甚至到达10s。
            最先采取措施是重启linux服务器以此来释放内存,但是内存不到半个月几乎又要被占满了,于是在网上搜寻一下方法,以供参考。
            

        第一部: 首先讲一个命令:free  来查看下服务器内存的使用情况

    [root@localhost ~]# free -m
                           total         used         free      shared      buffers     cached
    Mem:             2703       1013        1690          0            116           235
    -/+ buffers/cache:        660          2043
    Swap:            3999          0            3999



    先来解释第一行:
    Mem的  Total=used+free        used使用内存     free空闲内存   
    shared          表示被几个进程共享的内存的。
    buffer  缓冲 是用于存放要输出到disk(块设备)的数据。
                           是根据磁盘的读写 设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,
                           从而提高系统性能。
    cache  缓存 是存放从disk上读出的数据。是把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不                           要去读硬盘了,若没有命中就读硬盘。其中的数据会根据读取频率进行组织,把最频繁读取的内容放在                           最容易找到的位置,把不再读的内容不断往后排,直至从中删除。
                                    如果cache 的值很大,说明cache住的文件数很多。如果频繁访问到的文件都能被cache住,那么磁                         盘的读IO bi会非常小。

    第二行:
    这一行表示两项   -buffers/cache  和  + buffers/cache
     -buffers/cache   = used -(buffers+cache)   表示使用的内存中不计算buffers和cache,系统使用内存量
    + buffers/cache  =free+( buffers+cache)    表示系统空闲内存与buffers、cache的和

    第三行:
    交换内存  使用量  空限量



    第二部:修改drop_cache 文件,手工释放内存
            /proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。

            那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存。操作如下:
            root@server test]# cat /proc/sys/vm/drop_caches

    0

          /proc/sys/vm/drop_caches的值,默认为0。


           [root@server test]# sync


            手动执行sync命令(描述:sync 命令运行 sync 子例程。如果必须停止系统,则运行sync 命令以确保文件系统的完整性。sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件)


    [root@server test]# echo 3 > /proc/sys/vm/drop_caches
    [root@server test]# cat /proc/sys/vm/drop_caches
    3


    将/proc/sys/vm/drop_caches值设为3




    第三部:drop_caches的详细文档如下:

    Writing to this will cause the kernel to drop clean caches, dentries and inodes from memory, causing that memory to become free.

    To free pagecache:     清空 页面 高速缓存
    * 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

    从man可以看到,这值从2.6.16以后的核心版本才提供,也就是老版的操作系统都是没有这个的。
  • 相关阅读:
    浏览器嗅探
    (转)javascript中为何在匿名function函数后面还外加一个括号
    js十进制转换二进制
    css_毛玻璃
    css桌布样式
    ocr api 识别表格 图片
    Linux查看日志常用命令
    linux find 命令查找文件和文件夹
    docker上安装airflow
    文件权限中 chmod、u+x、u、r、w、x分别代表什么
  • 原文地址:https://www.cnblogs.com/centos2017/p/7896707.html
Copyright © 2020-2023  润新知