Redis启动的三个告警

现象说明:Redis启动出现三个告警信息,然后在启动Tomcat调用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.

意思是:TCP backlog设置值,511没有成功,因为 /proc/sys/net/core/somaxconn这个设置的是更小的128.
关于Linux内核somaxconn参数:
定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数,默认值为128

临时解决方法:(即下次启动还需要修改此值)
echo 511 > /proc/sys/net/core/somaxconn

永久解决方法:(即以后启动还需要修改此值)
将net.core.somaxconn = 1024添加到/etc/sysctl.conf中,然后执行sysctl -p生效配置
baklog参数实际控制的是已经3次握手成功的还在accept queue的大小。

参考linux里的backlog详解
https://blog.csdn.net/raintungli/article/details/37913765

2、第二个警告: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!在内存不足的情况下,后台程序save可能失败。建议在文件 /etc/sysctl.conf 中将overcommit_memory修改为1。

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

临时解决方法:echo “vm.overcommit_memory=1” > /etc/sysctl.conf

永久解决方法:将vm.overcommit_memory = 1添加到/etc/sysctl.conf中,然后执行sysctl -p生效配置。

参考:有关linux下redis overcommit_memory的问题
https://blog.csdn.net/whycold/article/details/21388455

3、第三个警告:you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix thisissue run the command ‘echo never > /sys/kernel/mm/transparent_hugepage/enabled’ as root, and add it to your /etc/rc.local in order to retain thesetting after a reboot. Redis must be restarted after THP is disabled.

意思是:使用的是透明大页,可能导致redis延迟和内存使用问题。执行 echo never > /sys/kernel/mm/transparent_hugepage/enabled 修复该问题。

临时解决方法:
echo never > /sys/kernel/mm/transparent_hugepage/enabled。

永久解决方法:
将echo never > /sys/kernel/mm/transparent_hugepage/enabled添加到/etc/rc.local中,执行source /etc/rc.local生效配置。

参考透明大页介绍
https://www.cnblogs.com/kerrycode/archive/2015/07/23/4670931.html

设置修改后启动redis无任何告警信息
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章