解决linux下redis数据库overcommit_memory问题


Posted in Redis onFebruary 24, 2022

背景

公司的redis有时background save db不成功,通过log发现下面的告警,很可能由它引起的:

[13223] 17 Mar 13:18:02.207 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

于是通过搜索,也有人跟我遇到同样的问题,基本可以确定是由它引起的。

内核参数overcommit_memory 

它是 内存分配策略

可选值:0、1、2。

  • 0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
  • 1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
  • 2, 表示内核允许分配超过所有物理内存和交换空间总和的内存

什么是Overcommit和OOM

Linux对大部分申请内存的请求都回复"yes",以便能跑更多更大的程序。因为申请内存后,并不会马上使用内存。这种技术叫做Overcommit。当linux发现内存不足时,会发生OOM killer(OOM=out-of-memory)。它会选择杀死一些进程(用户态进程,不是内核线程),以便释放内存。

当oom-killer发生时,linux会选择杀死哪些进程?选择进程的函数是oom_badness函数(在mm/oom_kill.c中),该函数会计算每个进程的点数(0~1000)。点数越高,这个进程越有可能被杀死。每个进程的点数跟oom_score_adj有关,而且oom_score_adj可以被设置(-1000最低,1000最高)。

解决方法:

很简单,按提示的操作(将vm.overcommit_memory 设为1)即可:

有三种方式修改内核参数,但要有root权限:

  • (1)编辑/etc/sysctl.conf ,改vm.overcommit_memory=1,然后sysctl -p 使配置文件生效
  • (2)sysctl vm.overcommit_memory=1
  • (3)echo 1 > /proc/sys/vm/overcommit_memory

到此这篇关于解决linux下redis数据库overcommit_memory问题的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Redis 相关文章推荐
Redis6.0搭建集群Redis-cluster的方法
May 08 Redis
Redis 配置文件重要属性的具体使用
May 20 Redis
redis哨兵常用命令和监控示例详解
May 27 Redis
Redis Cluster 字段模糊匹配及删除
May 27 Redis
浅谈Redis的几个过期策略
May 27 Redis
详解缓存穿透击穿雪崩解决方案
May 28 Redis
详解Redis复制原理
Jun 04 Redis
使用Redis实现实时排行榜功能
Jul 02 Redis
嵌入式Redis服务器在Spring Boot测试中的使用教程
Jul 21 Redis
redis 存储对象的方法对比分析
Aug 02 Redis
关于SpringBoot 使用 Redis 分布式锁解决并发问题
Nov 17 Redis
解决linux下redis数据库overcommit_memory问题
Feb 24 Redis
解决Redis启动警告问题
分布式Redis Cluster集群搭建与Redis基本用法
Redis命令处理过程源码解析
Redis+Lua脚本实现计数器接口防刷功能(升级版)
Spring Boot实战解决高并发数据入库之 Redis 缓存+MySQL 批量入库问题
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
Feb 12 #Redis
聊聊redis-dump工具安装问题
Jan 18 #Redis
You might like
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
2013/12/02 PHP
php判断GIF图片是否为动画的方法
2020/09/04 PHP
Yii模型操作之criteria查找数据库的方法
2016/07/15 PHP
php-fpm中max_children的配置
2019/03/15 PHP
ExtJS Grid使用SimpleStore、多选框的方法
2009/11/20 Javascript
与jquery serializeArray()一起使用的函数,主要来方便提交表单
2011/01/31 Javascript
jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果
2013/06/27 Javascript
刷新页面的几种方法小结(JS,ASP.NET)
2014/01/07 Javascript
让input框实现类似百度的搜索提示(基于jquery事件监听)
2014/01/31 Javascript
JavaScript结合Bootstrap仿微信后台多图文界面管理
2016/07/22 Javascript
JS框架之vue.js(深入三:组件1)
2016/09/29 Javascript
Vue.js组件使用开发实例教程
2016/11/01 Javascript
H5图片压缩与上传实例
2017/04/21 Javascript
SpringMVC+bootstrap table实例详解
2017/06/02 Javascript
Vue中计算属性computed的示例解读
2017/07/26 Javascript
Vue一次性简洁明了引入所有公共组件的方法
2018/11/28 Javascript
快速对接payjq的个人微信支付接口过程解析
2019/08/15 Javascript
layui表单验证select下拉框实现验证的方法
2019/09/05 Javascript
[03:40]DOTA2英雄梦之声_第01期_炼金术士
2014/06/23 DOTA
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS TNC
2018/03/30 DOTA
[50:58]2018DOTA2亚洲邀请赛3月29日 小组赛A组OpTic VS Newbee
2018/03/30 DOTA
Python SqlAlchemy动态添加数据表字段实例解析
2018/02/07 Python
python numpy和list查询其中某个数的个数及定位方法
2018/06/27 Python
Python 获取 datax 执行结果保存到数据库的方法
2019/07/11 Python
如何利用Python模拟GitHub登录详解
2019/07/15 Python
Django使用 Bootstrap 样式修改书籍列表过程解析
2019/08/09 Python
python BlockingScheduler定时任务及其他方式的实现
2019/09/19 Python
YUV转为jpg图像的实现
2019/12/09 Python
浅谈HTML5 Web Worker的使用
2018/01/05 HTML / CSS
金鑫耀Java笔试题
2014/09/06 面试题
酒店公关部经理岗位职责
2013/11/24 职场文书
高中班主任评语大全
2014/04/25 职场文书
专题组织生活会方案
2014/06/15 职场文书
2015年计生工作总结范文
2015/04/24 职场文书
实习单位鉴定意见
2015/06/04 职场文书
入学证明
2015/06/23 职场文书