redis 启动时 Warning 警告解决及说明

启动错误

1.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.
2.WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
解决方法

第一个警告两个方式解决(overcommit_memory)

  1. echo "vm.overcommit_memory=1" > /etc/sysctl.conf

    1. systcl -p   生效配置

      或 vi /etcsysctl.conf , 然后reboot重启机器

2.  echo 1 > /proc/sys/vm/overcommit_memory  不需要启机器就生效

第二个警告解决

1. echo 511 > /proc/sys/net/core/somaxconn

overcommit_memory参数说明
设置内存分配策略(可选,根据服务器的实际情况进行设置)
/proc/sys/vm/overcommit_memory
可选值:0、1、2。
0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2, 表示内核允许分配超过所有物理内存和交换空间总和的内存

注意:redis在dump数据的时候,会fork出一个子进程,理论上child进程所占用的内存和parent是一样的,比如parent占用 的内存为8G,这个时候也要同样分配8G的内存给child,如果内存无法负担,往往会造成redis服务器的down机或者IO负载过高,效率下降。所 以这里比较优化的内存分配策略应该设置为 1(表示内核允许分配所有的物理内存,而不管当前的内存状态如何)。

这里又涉及到Overcommit和OOM。

什么是Overcommit和OOM
在Unix中,当一个用户进程使用malloc()函数申请内存时,假如返回值是NULL,则这个进程知道当前没有可用内存空间,就会做相应的处理工作。许多进程会打印错误信息并退出。

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

Overcommit的策略
Linux下overcommit有三种策略(Documentation/vm/overcommit-accounting):
0. 启发式策略。合理的overcommit会被接受,不合理的overcommit会被拒绝。
1. 任何overcommit都会被接受。
2. 当系统分配的内存超过swap+N%*物理RAM(N%由vm.overcommit_ratio决定)时,会拒绝commit。
overcommit的策略通过vm.overcommit_memory设置。
overcommit的百分比由vm.overcommit_ratio设置。

# echo 2 > /proc/sys/vm/overcommit_memory
# echo 80 > /proc/sys/vm/overcommit_ratio

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

时间: 2024-11-08 20:54:46

redis 启动时 Warning 警告解决及说明的相关文章

Redis启动Sentinel出现警告的解决

Redis 3.0.7版本启动时出现警告的解决办法 7283:M 12 Mar 12:13:33.749 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.7283:M 12 Mar 12:13:33.749 # Server started, Redis version 3.0.772

ELK 学习笔记之 elasticsearch启动时Warning解决办法

elasticsearch启动时Warning解决办法: 转载:http://www.dajiangtai.com/community/18136.do?origin=csdn-geek&dt=1214 问题一: [2016-11-06T16:27:21,712][WARN ][o.e.b.JNANatives ] unable to install syscall filter: Java.lang.UnsupportedOperationException: seccomp unavaila

Apple Mach-O Linker Warning 警告解决办法

此警告解决办法: 项目名字 -> targets -> Build Settings -> search path 把里面没用的东西 点 减号 删掉 就行了. 版权声明:本文为博主原创文章,未经博主允许不得转载.

redis启动时警告信息去除及简单安全设置

windows: https://github.com/MSOpenTech/redis/releases 12645:M 29 Jul 23:05:55.764 # Server started, Redis version 3.0.3 12645:M 29 Jul 23:05:55.766 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix t

redis启动时的几个报警错误-redis优化

1)The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128 2)WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcomm

关于jdk配置正确但是tomcat服务器启动时一闪而过的解决办法

首先JDK配置没有问题,在控制台窗口下键入java或javac命令没有错误,然后排出tomcat服务器也没有放在有中文的文件夹下.但是tomcat服务无启动时候只是一闪而过.在命令行窗口下键入startup.bat时提示如下图: 提示JRE_HOME环境变量没有正确配置.解决办法在系统环境变量中加入jre_home环境变量,如下图:首先新建环境变量.变量名:jre_home,变量值:“jre所在路径” 然后再path变量中添加进刚刚新建的jre_home变量如下图: 好了再次启动tomcat启动

20150509Windows下MySQL启动时错误代码1067解决

在cmd下使用net start mysql56(我的mysql服务名),一.提示1067错误 上网搜集了很多资料,都是修改My.ini配置 (1)将存储引擎从INNODB改为MYISAM: (2)在my.ini下追加: [WindowsMySQLServer] Server="D:/Program Files/MySQL/MySQL Server 5.6/bin/mysqld.exe"(我的mysql可执行文件路径) 都未曾解决,直到如下解决方案被使用: 进入mysql的data目录

Redis入门到高可用(二)—— Redis启动及使用

1. 三种启动方式 ♦?  最简启动 ./redis-server 使用Redis默认配置进行启动; ♦?  动态参数启动 * redis-server --port 6380  更改端口为6380并启动 ♦?  配置文件启动 redis-server  configPath (将需要的配置写在配置文件中) 三种方式对比:    生产环境选择配置文件启动    单机多实例配置文件可以用端口区分开 2. Redis客户端连接 ./redis-cli  -h 127.0.0.1 -p 6379 Re

Redis启动警告错误解决

启动错误 1.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 tak