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
  • 相关阅读:
    C# 安装部署Windows服务脚本
    Oracle DataTable的数据批量写入数据库
    C# 日志的配置流程
    C# CSV文件读写
    C# 读写App.config配置文件的方法
    C# 限速下载网络文件
    js 获取纯web地址栏中URL传参
    android 获取通话记录
    vue.js sha256加密
    chrome浏览器插件开发实例
  • 原文地址:https://www.cnblogs.com/amoy9812/p/12107576.html
Copyright © 2011-2022 走看看