解决redis启动的警告日志问题

 更新时间:2024年01月26日 09:59:04   作者:KKang@  
这篇文章主要介绍了解决redis启动的警告日志问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

redis启动时,出现警告日志

原因是redis缓存的数据过多,没有提前做好数据过期策略,导致超过物理机的实际内存。

需要修改计算机内存策略

(1)警告描述,不能设置tcp的堆积为511

因为/proc/sys/net/core/somaxconn的值为128太低。

报错:

WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.

分析:

然后了解到/proc/sys/net/core/somaxconn为linux的内核参数,即linux每端扣可以监听的最大tcp数量。

解决方案:

修改linux系统参数,在里面增加net.core.somaxconn配置,注意:直接修改/proc/sys/net/core/somaxconn内,系统重启后会还原。

永久解决:vim /etc/sysctl.conf

net.ipv4.conf.default.accept_source_route = 1

立即生效:sysctl -p

(2)一台机器如果内存用完,在进行bgsave时,可能会报错

错误信息大概如下:

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.

分析:

当执行redis的bgsave命令时,redis会fork一个进程把redis中的内存数据写入磁盘。

这样的好处是,copy on write,有效的节省了内存占用。

但是,bgsave时,如果有数据变更,一样需要申请内存。

当申请内存时,如果发现内存不够,可能就会报上面的错误

vim /etc/sysctl.conf

net.core.somaxconn= 1024
sysctl vm.overcommit_memory=1
vm.overcommit_memory = 1

立即生效:sysctl -p

(3)使用的是透明大页,可能导致redis延迟和内存使用问题

WARNING you have Transparent Huge Pages (THP) support enabled in your kernel.

This will create latency and memory usage issues with Redis.

To fix this issue 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 the setting after a reboot.

Redis must be restarted after THP is disabled.

临时解决方法:

echo never > /sys/kernel/mm/transparent_hugepage/enabled

永久解决方法:

将其写入/etc/rc.local文件中

if test -f /sys/kernel/mm/redhat_transparent_hugepage/enabled; 
then
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
fi

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 浅谈Redis对于过期键的三种清除策略

    浅谈Redis对于过期键的三种清除策略

    本文主要介绍了Redis对于过期键的三种清除策略,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Redis实现自动清理过期键值对的代码示例

    Redis实现自动清理过期键值对的代码示例

    在这个数据爆炸的时代,内存就像珍贵的土地资源,而Redis则是这片土地上的智能管家,它不仅能高效存储数据,还能像秋叶定时凋零般,让键值对在指定时间自动消失,本文小编给大家介绍了Redis实现自动清理过期键值对实战,需要的朋友可以参考下
    2025-06-06
  • redis++的编译 安装 使用方案

    redis++的编译 安装 使用方案

    这篇文章主要介绍了redis++的编译 安装 使用方案的相关资料,需要的朋友可以参考下
    2023-03-03
  • redis内存空间效率问题的深入探究

    redis内存空间效率问题的深入探究

    redis缓存固然高效,可是它会占用我们系统中宝贵的内存资源,那该如何解决呢?这篇文章主要给大家介绍了关于redis内存空间效率问题的相关资料,需要的朋友可以参考下
    2021-05-05
  • 利用Redis进行数据缓存的项目实践

    利用Redis进行数据缓存的项目实践

    在实际的业务场景中,Redis 一般和其他数据库搭配使用,用来减轻后端数据库的压力,本文就介绍了利用Redis进行数据缓存的项目实践,具有一定的参考价值,感兴趣的可以了解一下
    2022-06-06
  • Redis高可用梳理详解

    Redis高可用梳理详解

    高可用的本质是有备份,在出现故障的时候,有backup可以提供服务,本文详细介绍了Redis的高可用,感兴趣的同学可以参考阅读
    2023-05-05
  • 高并发技巧之Redis和本地缓存使用技巧分享

    高并发技巧之Redis和本地缓存使用技巧分享

    在这篇文章中,我主要介绍的是分布式缓存和本地缓存的使用技巧,包括缓存种类介绍,各种的使用场景,以及如何使用,最后再给出实战案例,需要的可以参考一下
    2022-10-10
  • Redis下载部署并加入idea应用的小结

    Redis下载部署并加入idea应用的小结

    这篇文章主要介绍了Redis下载部署并加入idea应用,需要的朋友可以参考下
    2022-10-10
  • Redis分布式锁一定要避开的两个坑

    Redis分布式锁一定要避开的两个坑

    这篇文章主要为大家详细介绍了Redis中分布式锁一定要避开的两个坑以及对应的解决方法,文中的示例代码讲解详细,希望对大家有所帮助
    2023-04-04
  • Redis数据类型string和Hash详解

    Redis数据类型string和Hash详解

    大家都知道Redis中有五大数据类型分别是String、List、Set、Hash和Zset,本文给大家分享Redis数据类型string和Hash的相关操作,感兴趣的朋友跟随小编一起看看吧
    2022-03-03

最新评论