zoukankan      html  css  js  c++  java
  • Linux中如何避免buffers/cached占用过多内存

    转载自:https://www.cnblogs.com/panfeng412/p/drop-caches-under-linux-system-2.html

    服务器在使用过程,发现没几个服务,但是内存的free却几近耗尽

    当有请求需要申请大内存的时候,有时会出现失败的情况

    分析内存的占用中,buffers/cached占用了接近70%,而网上一些资料都是简单的一个处理drop_caches清空就了事

    实际服务器过程中,诸多因素决定这个操作不适用,因此考虑了解Linux自动回收的机制

    先是了解了vfs_cache_pressure,但是参数的调整只是觉得优先保存哪部分的缓存而已,实际没有涉及到触发阀值的设置

    后了解到extra_free_kbytes的参数设定,没有时间详细查看Linux的内核源码以了解详细机制,在网上找到了上述的文章中,也碰到了同样的需求

    写的很详细,实测有效,收录起来。

    1. 首先,grep low /proc/zoneinfo,得到如下结果:

            low      1
            low      380
            low      12067

    2. 将以上3列加起来,乘以4KB,就是这个阈值,通过这个方法计算后发现当前服务器的回收阈值只有48MB,因此很难看到这一现象,实际中可能等不到回收,操作系统就会hang住没响应了。

    3. 可以通过以下方法调大这个阈值:将vm.extra_free_kbytes设置为vm.min_free_kbytes和一样大,则/proc/zoneinfo中对应的low阈值就会增大一倍,同时high阈值也会随之增长,以此类推。

    $ sudo sysctl -a | grep free_kbytes       
    vm.min_free_kbytes = 39847
    vm.extra_free_kbytes = 0
    $ sudo sysctl -w vm.extra_free_kbytes=836787 ######1GB
  • 相关阅读:
    springcloud之consul
    git学习创建项目仓库
    学习vue之路V1.0.0
    使用jquery+ajax+php实现搜索框的功能
    发现一个vue的UI组件库
    一个菜鸟用webpack-vue.js编译过程碰到的坑~~!!
    学习vue之路
    typescript入门
    计算机排序算法
    js中三种变量的声明方式const ; var ; let
  • 原文地址:https://www.cnblogs.com/amoy9812/p/12107576.html
Copyright © 2011-2022 走看看