解决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 相关文章推荐
redis配置文件中常用配置详解
Apr 14 Redis
Redis安装启动及常见数据类型
Apr 14 Redis
redis限流的实际应用
Apr 24 Redis
详解redis分布式锁的这些坑
May 19 Redis
比较几种Redis集群方案
Jun 21 Redis
Redis缓存-序列化对象存储乱码问题的解决
Jun 21 Redis
Redis如何实现分布式锁
Aug 23 Redis
Redis 常见使用场景
Aug 30 Redis
SpringBoot整合Redis入门之缓存数据的方法
Nov 17 Redis
详解Redis的三种常用的缓存读写策略步骤
May 06 Redis
Redis基本数据类型Zset有序集合常用操作
Jun 01 Redis
redis protocol通信协议及使用详解
Jul 15 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
Uncaught exception com_exception with message Failed to create COM object
2012/01/11 PHP
thinkphp5.1框架模板赋值与变量输出示例
2020/05/25 PHP
用 javascript 实现的点击复制代码
2007/03/24 Javascript
JScript 脚本实现文件下载 一般用于下载木马
2009/10/29 Javascript
JavaScript DOM学习第六章 表单实例
2010/02/19 Javascript
node.js中的fs.writeFileSync方法使用说明
2014/12/14 Javascript
js HTML5多图片上传及预览实例解析(不含前端的文件分割)
2016/08/26 Javascript
使用Webpack提高Vue.js应用的方式汇总(四种)
2017/07/10 Javascript
AngularJS模糊查询功能实现代码(过滤内容下拉菜单排序过滤敏感字符验证判断后添加表格信息)
2017/10/24 Javascript
Angular实现的敏感文字自动过滤与提示功能示例
2017/12/29 Javascript
JavaScript ES6常用基础知识总结
2019/02/09 Javascript
性能优化篇之Webpack构建速度优化的建议
2019/04/03 Javascript
VUE脚手架具体使用方法
2019/05/20 Javascript
Python实现Youku视频批量下载功能
2017/03/14 Python
python实现自动发送邮件发送多人、群发、多附件的示例
2018/01/23 Python
python实现飞机大战游戏
2020/10/26 Python
django最快程序开发流程详解
2019/07/19 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
2019/10/12 Python
django ORM之values和annotate使用详解
2020/05/19 Python
Python3合并两个有序数组代码实例
2020/08/11 Python
python实现邮件循环自动发件功能
2020/09/11 Python
python实现测试工具(一)——命令行发送get请求
2020/10/19 Python
Python datetime模块的使用示例
2021/02/02 Python
利用CSS3的checked伪类实现OL的隐藏显示的方法
2010/12/18 HTML / CSS
phpquery中文手册
2021/03/18 PHP
Bailey帽子官方商店:Bailey Hats
2018/09/25 全球购物
澳大利亚买卖正宗二手奢侈品交易平台:Luxe.It.Fwd
2019/10/16 全球购物
俄语地区最大的中国商品在线购物网站之一:Umka Mall
2019/11/03 全球购物
大学生专科学习生活的自我评价
2013/12/07 职场文书
小班开学寄语
2014/04/04 职场文书
专科应届毕业生求职信
2014/06/04 职场文书
小学三八妇女节活动总结
2015/02/06 职场文书
2015年护理工作总结范文
2015/04/03 职场文书
创建文明城市倡议书
2015/04/28 职场文书
使用react+redux实现计数器功能及遇到问题
2021/06/02 Javascript
Win11远程连接不上怎么办?Win11远程桌面用不了的解决方法
2022/08/05 数码科技