当前位置: 首页 > news >正文

redis集群创建问题处理

一.TCP 积压设置问题和处理内存超配警告

3432:C 17 Sep 2024 16:50:39.537 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
3432:C 17 Sep 2024 16:50:39.537 # Redis version=7.0.11, bits=64, commit=00000000, modified=0, pid=3432, just started
3432:C 17 Sep 2024 16:50:39.537 # Configuration loaded
3432:M 17 Sep 2024 16:50:39.538 * Increased maximum number of open files to 10032 (it was originally set to 1024).
3432:M 17 Sep 2024 16:50:39.538 * monotonic clock: POSIX clock_gettime
3432:M 17 Sep 2024 16:50:39.539 * Node configuration loaded, I'm 5b5974b1f5996d406147f7f6dd6e921a3281823c
3432:M 17 Sep 2024 16:50:39.540 * Running mode=cluster, port=7001.
3432:M 17 Sep 2024 16:50:39.540 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
3432:M 17 Sep 2024 16:50:39.540 # Server initialized
3432:M 17 Sep 2024 16:50:39.540 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. 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.
3432:M 17 Sep 2024 16:50:39.540 * Reading RDB base file on AOF loading...
3432:M 17 Sep 2024 16:50:39.540 * Loading RDB produced by version 7.0.11
3432:M 17 Sep 2024 16:50:39.540 * RDB age 1360517 seconds
3432:M 17 Sep 2024 16:50:39.540 * RDB memory usage when created 1.51 Mb
3432:M 17 Sep 2024 16:50:39.540 * RDB is base AOF
3432:M 17 Sep 2024 16:50:39.540 * Done loading RDB, keys loaded: 0, keys expired: 0.
3432:M 17 Sep 2024 16:50:39.540 * DB loaded from base file appendonly.aof.1.base.rdb: 0.000 seconds
3432:M 17 Sep 2024 16:50:39.540 * DB loaded from append only file: 0.000 seconds
3432:M 17 Sep 2024 16:50:39.540 * Opening AOF incr file appendonly.aof.1.incr.aof on server start
3432:M 17 Sep 2024 16:50:39.540 * Ready to accept connections
3432:M 17 Sep 2024 16:51:18.123 # Discarding UPDATE message about myself.
3432:M 17 Sep 2024 16:51:18.128 # Discarding UPDATE message about myself.

1.“WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.” 提示 TCP 积压设置无法生效,因为系统参数 /proc/sys/net/core/somaxconn 的值较低。

1.处理 TCP 积压设置问题
  • 这个参数定义了系统中每一个端口最大的监听队列长度。默认值通常为 128。
  • 如果 Redis 的 TCP 积压设置(在日志中为 511)高于这个值,就会出现日志中的警告,导致无法强制执行设置的积压值。
  • 临时调整:可以使用以下命令立即将该参数的值调整为一个较大的数
    sysctl -w net.core.somaxconn=1024
  • 永久调整:要使这个设置在系统重启后仍然生效,可以编辑 /etc/sysctl.conf 文件,添加或修改以下行:
net.core.somaxconn = 1024保存文件后,使用以下命令使更改生效sysctl -p

2.“WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition.” 提醒内存超配必须启用,否则在低内存情况下可能会导致后台保存或复制失败,并给出了解决方法,即修改 /etc/sysctl.conf 文件并设置 vm.overcommit_memory = 1,或者使用命令 sysctl vm.overcommit_memory=1

2.处理内存超配警告
  • 理解内存超配的重要性:

    • Redis 在进行后台保存(如生成 RDB 文件)或复制(主从复制)操作时,如果内存不足,可能会导致这些操作失败。
    • 启用内存超配可以让 Redis 在一定程度上使用超过系统实际物理内存的空间,但这也可能带来系统不稳定的风险,需要谨慎使用。
  • 启用内存超配的方法:

    • 按照日志中的建议,编辑 /etc/sysctl.conf 文件,添加以下行:
vm.overcommit_memory = 1
保存文件后,使用以下命令使更改生效:
sysctl -p

这上述两个问题,还是建议服务器的硬件性能提升,这样对服务器稳定性更有保障。这边主要是虚拟机创建,服务器性能不是很好会导致这个情况。

二.创建集群失败

192.168.11.115:7001>      CLUSTER INFO
cluster_state:fail
cluster_slots_assigned:5461
cluster_slots_ok:5461
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:3
cluster_size:1
cluster_current_epoch:3
cluster_my_epoch:1
cluster_stats_messages_ping_sent:15521
cluster_stats_messages_pong_sent:14791
cluster_stats_messages_sent:30312
cluster_stats_messages_ping_received:14789
cluster_stats_messages_pong_received:15521
cluster_stats_messages_meet_received:2
cluster_stats_messages_received:30312
total_cluster_links_buffer_limit_exceeded:0

这个输出显示了 Redis 集群的状态信息,目前集群处于 “fail”(失败)状态。以下是对各个字段的解释和可能的问题分析及解决方法:

1.字段解释
cluster_state:fail:表示当前集群的整体状态为失败。
cluster_slots_assigned:5461:表示已经分配的哈希槽数量为 5461。正常情况下应该是 16384。
cluster_slots_ok:5461:表示正常的哈希槽数量为 5461。
cluster_slots_pfail:0:表示处于可能失败状态的哈希槽数量为 0。
cluster_slots_fail:0:表示已经确定失败的哈希槽数量为 0。
cluster_known_nodes:3:表示集群中已知的节点数量为 3,这与预期相符。
cluster_size:1:表示当前有效的集群规模为 1,说明只有一个节点在正常工作。
cluster_current_epoch:3:当前集群的纪元值。
cluster_my_epoch:1:本节点的纪元值。
cluster_stats_messages_ping_sent等:表示发送和接收的各种集群消息的统计数量。
  • 检查节点状态:

    • 确认其他两个节点是否正常运行。可以通过查看节点的日志文件或者使用 ps -ef | grep redis 命令来检查 Redis 进程是否在运行。
    • 如果节点没有运行,尝试重新启动它们。
  • 网络连接问题:

    • 确保节点之间的网络连接正常。可以使用 ping 命令检查节点之间的网络连通性。
    • 检查防火墙设置,确保 Redis 端口(通常是 7001、7002 等)没有被阻止。
  • 配置问题:

    • 检查每个节点的配置文件,确保配置正确,特别是 IP 地址、端口号、集群配置参数等。
    • 确认节点的 cluster-config-file 参数指定的集群配置文件是否存在且可读写。
  • 清理旧的集群信息:

    • 如果之前尝试创建集群失败,可能会留下一些旧的集群信息。尝试停止所有节点,删除节点的数据目录(通常在配置文件中指定)下的所有文件,然后重新启动节点并创建集群。
  • 检查日志文件:         

    • 仔细查看每个节点的日志文件,查找可能的错误信息或警告。这些信息可能会提供更多关于集群失败的线索。

  • 检查集群配置文件

  • 确认每个节点的配置文件中关于集群的设置是否正确。重点检查以下参数:
    • cluster-enabled:确保该参数设置为yes,以启用集群模式。
    • cluster-node-timeout:这个参数设置了节点不可达的超时时间,确保它的值在合理范围内。
2.重新创建集群
  • 如果以上检查都没有发现问题,可以尝试重新创建集群。在重新创建之前,确保所有节点都已停止,并且清理掉可能残留的旧集群配置文件和数据。
    • 停止所有节点的 Redis 服务。
    • 删除每个节点的数据目录下的所有文件(通常是在配置文件中指定的dir参数对应的目录)。
    • 使用redis-cli --cluster create命令重新创建集群,确保输入的节点信息准确无误。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数据结构-3.3.栈的链式存储实现
  • PCL 计算点云距离
  • Python 入门教程(4)数据类型 | 4.6、列表
  • Oracle从入门到放弃
  • Halo 开发者指南——项目运行、构建
  • AI绘画:科技赋能艺术的崭新时代
  • CAPL_构建基于UDS的刷写学习—01 Hex文件的解析
  • 详细介绍 Redis 列表的应用场景
  • Java语言程序设计基础篇_编程练习题*18.29(某个目录下的文件数目)
  • xml重点笔记(尚学堂 3h)
  • zookeeper向管控平台上报状态
  • java序列化对象后读取数据错误的问题
  • 前端大模型入门:掌握langchain的核心Runnable接口(一)
  • Redis---卸载Redis
  • LeetCode 876
  • [case10]使用RSQL实现端到端的动态查询
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 0x05 Python数据分析,Anaconda八斩刀
  • canvas 五子棋游戏
  • ECMAScript6(0):ES6简明参考手册
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • Go 语言编译器的 //go: 详解
  • JAVA SE 6 GC调优笔记
  • Java比较器对数组,集合排序
  • LeetCode算法系列_0891_子序列宽度之和
  • MobX
  • python学习笔记 - ThreadLocal
  • Vue2.0 实现互斥
  • vue-cli3搭建项目
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 力扣(LeetCode)22
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 实习面试笔记
  • 数据科学 第 3 章 11 字符串处理
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 学习笔记:对象,原型和继承(1)
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 在Unity中实现一个简单的消息管理器
  • ​Java并发新构件之Exchanger
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #define用法
  • #Linux(Source Insight安装及工程建立)
  • #pragma multi_compile #pragma shader_feature
  • #单片机(TB6600驱动42步进电机)
  • #数据结构 笔记一
  • $.ajax,axios,fetch三种ajax请求的区别
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (Forward) Music Player: From UI Proposal to Code
  • (SpringBoot)第七章:SpringBoot日志文件
  • (八)Flink Join 连接
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐