`

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 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  或 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最高)。

分享到:
评论

相关推荐

    redis 用于win7

    `EventLog.dll`是用于Windows事件日志的动态链接库,如果你在配置文件中启用了日志记录到Windows事件日志,Redis会将错误和警告信息记录在这里。 5. **文档资源** 压缩包中的`.docx`文件,如`Redis on Windows....

    Redis3.0.500 for Windows最新版

    3. `EventLog.dll`:这是一个动态链接库文件,可能与Redis在Windows上的事件日志集成有关,使得Redis可以在Windows事件查看器中记录和报告错误或警告。 4. `Windows Service Documentation.docx`:这可能是一份文档...

    redis6.2.4安装.docx

    在编译过程中可能会遇到一些错误,如 `Active defrag in tests/unit/memefficiency.tcl`,此时可以忽略这些警告,继续执行 `make && make install` 命令,然后再通过 `make test` 进行测试。 #### 二、配置与优化 ...

    Linux安装部署Redis图例指导教程|Redis安装部署.pdf

    - 编译完成之后,建议执行测试,确保没有任何警告,表明Redis已正确编译并可以使用。 3. Redis配置与管理: - 官方提供了多种版本的配置文件模板,这些模板位于Redis安装目录下,例如/opt/redis/redis-6.0.8/。 ...

    Redis-x64-3.0.501.zip

    这个文件可能与Windows事件日志有关,因为Redis在Windows上可以集成到事件日志系统中,以便记录错误和警告信息。这有助于管理员监控和诊断Redis服务的问题。 3. **Redis on Windows.docx** 和 **Redis on Windows ...

    redis-4.0.0.tar.gz

    1. 日志:Redis的默认日志文件位于`/var/log/redis/redis.log`,通过日志可以追踪错误和警告信息。 2. 监控:利用`INFO`命令获取服务器状态信息,或集成监控工具如Grafana、Prometheus进行实时监控。 3. 性能优化:...

    Redis-x64-3.2.zip

    3. "EventLog.dll":这是一个动态链接库文件,用于集成 Redis 与 Windows 事件日志系统,使得 Redis 的错误和警告能够记录到系统日志中,方便排查问题。 4. "Redis on Windows.docx"、"Windows Service ...

    redis-windos

    3. `EventLog.dll`:这可能是用于集成Windows事件日志功能的动态链接库,允许Redis在Windows事件查看器中记录错误和警告信息,方便故障排查。 4. `Windows Service Documentation.docx`:这份文档可能详细介绍了如何...

    zabbix监控redis集群

    Redis集群的搭建涉及多个节点的配置和同步,通常包括创建主从关系、设置集群配置文件、启动Redis服务等步骤。集群的稳定性与数据一致性依赖于良好的配置和管理。 在Zabbix中监控Redis,我们需要编写专门的监控脚本...

    redis安装文档

    最后,使用以下命令启用并启动Redis服务: ``` [root@mongodb1 redis-3.2.1]# systemctl enable redis [root@mongodb1 redis-3.2.1]# systemctl start redis ``` 以上就是Redis在Linux系统上的安装与基本配置过程。...

    Redis-x64-5.0.10.zip

    它使得 Redis 可以将错误和警告信息记录到系统事件日志中,方便监控和故障排查。 5. **redis-check-rdb.exe**:这是一个实用工具,用于检查 RDB(Redis Database)持久化文件的完整性和一致性。RDB 是 Redis 提供的...

    linux中安装redis服务

    总之,安装和配置Redis服务涉及下载、编译、配置启动脚本、设置系统服务以及处理可能的警告和错误。通过这些步骤,你可以在Linux环境中成功运行Redis实例,为你的应用提供高效的数据存储和检索功能。

    Redis-x64-5.0.14.zip

    4. **EventLog.dll**:这是一个动态链接库文件,可能用于集成Windows事件日志系统,使得Redis在运行时能够记录并报告错误和警告,方便监控和调试。 5. **redis-check-rdb.exe**:这是一个工具,用于检查Redis的数据...

    最新Redis 64位服务端 windows稳定版本

    3. `EventLog.dll`:这是一个动态链接库文件,可能是用来集成Windows事件日志功能的,使得Redis在运行时可以记录和报告错误或警告信息到系统日志,便于故障排查。 4. `Redis on Windows.docx`、`Windows Service ...

    redis技术文档

    4. **启动服务**:通过命令行启动Redis服务。 5. **客户端连接**:使用客户端工具如`redis-cli`连接Redis服务器。 ##### 4.2 Redis的配置 - `bind`: 设置Redis监听的IP地址。 - `port`: 设置Redis监听的端口号,...

    windows_redis.rar

    这个文件可能用于在Windows环境下集成事件日志服务,使Redis可以在系统事件日志中记录错误和警告,帮助管理员监控和排查问题。 3. **Redis on Windows.docx**: 这是一份文档,详细介绍了如何在Windows上安装和...

    redis2.8要的拿走

    接下来,`EventLog.dll`是一个动态链接库,可能与在Windows上集成Windows事件日志有关,使得Redis可以将错误和警告信息记录到系统事件日志中,方便进行故障排查和诊断。 `Redis on Windows.docx`、`Windows Service...

    Windows Redis-x64-3.2.100.zip

    - `EventLog.dll`可能是用于集成Windows事件日志系统的动态链接库,使Redis能在系统日志中记录错误和警告信息,方便故障排查。 5. **发行说明**: - `Redis on Windows Release Notes.docx`可能包含了针对Windows...

    Redis-x64 windows

    `EventLog.dll` 是Windows事件日志相关的动态链接库,它使得Redis能够在Windows事件查看器中记录错误和警告信息,这对于故障排查和系统监控非常有帮助。 `Redis on Windows.docx`, `Windows Service Documentation....

Global site tag (gtag.js) - Google Analytics