https://www.modb.pro/db/25980

前言:
作为DBA,内存的使用情况是重要的监控指标之一,了解内存使用很重要。下面有一个系统参数,对于内存的调用起到重要的作用。大家可以了解一下。

参数overcommit_memory:
overcommit的中文意思是过量使用,那overcommit_memory指的就是过量使用内存。这个参数决定了操作系统在应对应用申请内存时是如果分配的。(为什么会过量使用,不应该是有多少使用多少吗?因为在系统中并不是申请了多少内存就立即分配多少,有可能申请了10G,使用时仅分配了5G,这样就有5G内存在应用运行期间暂时闲置。如果有大量应用申请内存,那么就会有很多暂时闲置的内存。)
内存申请不等于内存分配,内存只在实际用到的时候才分配。

参数overcommit_memory的三种取值:
0 – Heuristic overcommit handling. 缺省值,它允许overcommit,但过于明目张胆的overcommit会被拒绝,比如malloc一次性申请的内存大小就超过了系统总内存。Heuristic的意思是“试探式的”,内核利用某种算法猜测你的内存申请是否合理,它认为不合理就会拒绝overcommit。
1 – Always overcommit. 允许overcommit,对内存申请来者不拒。
2 – Don’t overcommit. 禁止overcommit。

如果设置为0,申请的内存无法满足时(根据内部算法),则会触发OOM。
如果设置为1,申请的内存无法满足时(根据内部算法),部分会触发OOM,部分触发重启。
如果设置为2,申请的内存无法满足时,则禁止分配。那阈值是多少,由内部算法决定。它是通过内核参数vm.overcommit_ratio或vm.overcommit_kbytes间接设置的,公式如下:
【CommitLimit = (Physical RAM * vm.overcommit_ratio / 100) + Swap】
overcommit_ratio默认为50,如有特殊需求,可以自己修改。

查看当前系统的默认阈值:
cat /proc/meminfo | grep “Commit”

其中,CommitLimit指的就是overcommit的阈值,只要超过这个值,在参数设为2的情况下,系统就不允许申请内存。
/proc/meminfo中的 Committed_AS 表示目前操作系统所有进程已经申请的内存总大小。(申请不代表已分配)

修改参数overcommit_memory方法:
1、编辑/etc/sysctl.conf ,改vm.overcommit_memory=1,然后sysctl -p 使配置文件生效
2、sysctl vm.overcommit_memory=1
3、echo 1 > /proc/sys/vm/overcommit_memory

总结:
设置为2,禁用overcommit,会降低内存的使用效率,浪费内存资源。但是不会发生OOM。
设置为1,不建议使用。
设置为0,默认值,适度超发内存,但也有OOM风险。(这也是数据库经常发生OOM的原因)

参考:swappiness、OOM。

[转帖]Linux之系统参数overcommit_memory的更多相关文章

  1. Linux查看系统参数配置

    Linux查看系统参数 1.查看内存(以GB为单位) [root@rac1 ~]# free -g total :内存总数,物理内存总数 used :已使用内存 free :空闲的内存数 shared ...

  2. 有关linux下redis overcommit_memory的问题(转)

    一.背景 公司的redis有时background save db不成功,通过log发现下面的告警,很可能由它引起的: [13223] 17 Mar 13:18:02.207 # WARNING ov ...

  3. 有关linux下redis overcommit_memory的问题

    公司的几台Redis服务器出现不明故障,查看Redis日志,发现如下提示: 1 [34145] 01 Jan 17:42:02 # WARNING overcommit_memory is set t ...

  4. [转帖]Linux 硬件和系统配置查看命令小结

    https://blog.csdn.net/strongwangjiawei/article/details/8208825 转帖了不少 发现自己记住的还是不多.. Linux 硬件和系统配置查看命令 ...

  5. linux redis 启动 overcommit_memory

    Redis在启动时不成功, 查看日志发现如下警告: WARNING overcommit_memory is set to 0! Background save may fail under low ...

  6. [转帖]linux 内存管理——内核的shmall 和shmmax 参数

    (转)linux 内存管理——内核的shmall 和shmmax 参数   内核的 shmall 和 shmmax 参数 SHMMAX= 配置了最大的内存segment的大小 ------>这个 ...

  7. [转帖]Linux系统/dev/mapper目录浅谈

    Linux系统/dev/mapper目录浅谈   Linux系统的一般的文件系统名称类似于/dev/sda1或/dev/hda1,但是今天在进行系统维护的时候,利用df -h 命令敲出了/dev/ma ...

  8. 有关linux下redis overcommit_memory的问题,有需要的朋友可以参考下。

    我在安装redis-4.0.6后,启动时出现一些问题,如下: :M Jan ::! Background save may fail under low memory condition. To fi ...

  9. [转帖]linux各种IPC机制

    linux各种IPC机制 docker中的资源隔离,一种就是IPC的隔离.IPC是进程间通信. 下面的文章转载自https://blog.csdn.net/yyq_9623/article/detai ...

  10. linux的vm.overcommit_memory的内存分配参数详解

    公司的redis有时background save db不成功,通过log发现下面的告警,很可能由它引起的: [13223] 17 Mar 13:18:02.207 # WARNING overcom ...

随机推荐

  1. three.js中的矩阵计算

    目录 1. 概述 2. 详论 2.1. 行主序与列主序列 2.2. 矩阵乘法 3. 参考 1. 概述 three.js中自带了矩阵运算库,不过在使用的过程中总是容易混淆.不知道是行主序还是列主序,前乘 ...

  2. DTT第7期直播回顾 | 低代码应用构建流程和适用场景,与你想的一样吗?

    摘要:本期直播主题是<揭秘华为云低代码技术微认证>,向开发者们讲述低代码的发展历程,介绍华为低代码平台应用魔方AppCube的开发能力,解读华为低代码的认证和学习体系 本期直播详解 本期直 ...

  3. 云图说|初识云数据库GaussDB(for Redis)

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:云数据库Gauss ...

  4. ByteHouse:基于ClickHouse的实时数仓能力升级解读

     更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群   ByteHouse是火山引擎上的一款云原生数据仓库,为用户带来极速分析体验,能够支撑实时数据分析和海量数据离 ...

  5. 大数据 - DWD&DIM 业务数据

    业务数据的变化,我们可以通过 FlinkCDC 采集到,但是 FlinkCDC 是把全部数据统一写入一个 Topic 中, 这些数据包括事实数据,也包含维度数据,这样显然不利于日后的数据处理,所以这个 ...

  6. CMakeLists.txt的工程转成.sln

    直接说正确的操作(结合之前的笔记) 创建 Build 目录 mkdir build && cd build 执行 cmake 命令,根据 CMakeLists.txt 生成 .sln ...

  7. 深入学习和理解 Redux

    本文首发于 vivo互联网技术 微信公众号 链接: https://mp.weixin.qq.com/s/jhgQXKp4srsl9_VYMTZXjQ作者:曾超 Redux官网上是这样描述Redux, ...

  8. redis管道技术pipeline二——api

    package spring.redis; import org.springframework.beans.factory.InitializingBean; import org.springfr ...

  9. ios-class-guard - iOS代码混淆与加固实践

    ​ 目录 ios-class-guard - iOS代码混淆与加固实践 摘要 引言 一.class-dump 二.ios-class-guard 混淆原理 三.ios-class-guard 混淆结果 ...

  10. ios ipa包上传需要什么工具

    ​ 目录 ios ipa包上传需要什么工具 前言 一.IPA包的原理 二.IPA包上传的步骤 1.注册开发者账号 2.apk软件制作工具创建应用程序 3.构建应用程序 4.生成证书和配置文件 5.打包 ...