iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Redis中redis-cluster需要注意哪些地方
  • 934
分享到

Redis中redis-cluster需要注意哪些地方

2024-04-02 19:04:59 934人浏览 独家记忆
摘要

本篇内容主要讲解“Redis中redis-cluster需要注意哪些地方”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Redis中redis-cluster需要

本篇内容主要讲解“Redis中redis-cluster需要注意哪些地方”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Redis中redis-cluster需要注意哪些地方”吧!

1.收到150告警,rdb持久化失败

15011:M 17 Sep 08:54:43.037 # Can't save in background: fork: Cannot allocate memory
15011:M 17 Sep 08:54:49.043 * 1 changes in 900 seconds. Saving...
15011:M 17 Sep 08:54:49.043 # Can't save in background: fork: Cannot allocate memory

2 查看主机内存(内心os:尼玛还有这么多内存呢)

[root@ip-172-31-43-150 ~]# free -g
              total        used        free      shared  buff/cache   available
Mem:             29          14          10           0           4          14
Swap:             0           0           0

3 查看redis-cluster集群状态,显示150已down机,心慌慌

[root@ip-172-31-39-42 ~]# /usr/local/src/redis-4.0.8/src/redis-trib.rb  check 172.31.39.42:6379
[ERR] Sorry, can't connect to node 172.31.43.150:6379
*** WARNING: 172.31.39.54:6379 claims to be slave of unknown node ID 6d2b67b9745a8d4bedb70d480645e3651fddaf3f.
>>> PerfORMing Cluster Check (using node 172.31.39.42:6379)
M: 00f7bd511046438af2d1b41666a69ff77b6f176f 172.31.39.42:6379
   slots:11258-11832,13655-16383 (3304 slots) master
   1 additional replica(s)
S: e771e70f580ec2799af50268865444cf425e000e 172.31.33.17:6379
   slots: (0 slots) slave
   replicates 00f7bd511046438af2d1b41666a69ff77b6f176f
S: 8bb99c5b9585269b66684400f036fca1d30e72cb 172.31.47.157:6379
   slots: (0 slots) slave
   replicates 148697f75e9b4f84ad893f4d5377e96fdde7664d
M: 148697f75e9b4f84ad893f4d5377e96fdde7664d 172.31.34.25:6379
   slots:28,4799-5462,6375-7282,8194-9106,11833-12744 (3398 slots) master
   1 additional replica(s)
M: 40b766b505c54066de5b5d8eb214ea78c7df8c4b 172.31.36.10:6379
   slots:7542-8193,9107-10922,12745-13654 (3378 slots) master
   1 additional replica(s)
S: f6a625cc2d6fb66d267b15c8d668ea150be262bc 172.31.37.68:6379
   slots: (0 slots) slave
   replicates 792ab7473fa447d07582817eb2f489633001d831
M: 792ab7473fa447d07582817eb2f489633001d831 172.31.33.182:6379
   slots:0-27,29-1145,1822-2105,3406-4798,7283-7541 (3081 slots) master
   1 additional replica(s)
S: 92a5541964fc3e4bfb90f1750b9105d5705beb93 172.31.39.54:6379
   slots: (0 slots) slave
   replicates 6d2b67b9745a8d4bedb70d480645e3651fddaf3f
S: 7e5e1e341f33ebd7a3c20480b66a76bbd0922a4f 172.31.32.254:6379
   slots: (0 slots) slave
   replicates 40b766b505c54066de5b5d8eb214ea78c7df8c4b
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[ERR] Not all 16384 slots are covered by nodes.

登上150检查redis的状态,发现好好的!

先解决持久化失败的问题:

1.
172.31.39.54:6379> config set stop-writes-on-bgsave-error no  ---解决应用端抛异常的问题
OK
172.31.39.54:6379> config rewrite
OK
172.31.39.54:6379> 
2.开启内核参数,解决bgsave失败的问题
[root@ip-172-31-33-182 ~]# sudo echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf
[root@ip-172-31-33-182 ~]# sysctl -p
vm.overcommit_memory = 1

再次查看日志,已经持久化成功,check集群也发现集群恢复正常

关于redis的内存分配学习:

Redis有自己的内存分配器,当key-value对象被移除时,Redis不会马上向操作系统释放其占用内存(例如,当用户往一个实例填充了5G的数据,移除其中2G数据,但占用内存可能仍会保持在5G左右)。为什么Redis要这样处理?有两个原因:
1、OS可能会将释放内存交换到VM,但OS的VM又是物理文件,其IO读写效率较低,从而影响Redis性能表现;
2、OS的VM换入换出是基于Page机制,同一Page内的部分数据对象被释放,但其他数据对象依然被其他应用使用中,导致在该Page内的Redis对象没有被释放。
而Redis作者应该是考虑到以上问题,不希望Redis由此降低性能,所以在设计上Redis更倾向于自己掌控VM换入的粒度。(https://segmentfault.com/a/1190000004708270)

持久化的问题

Redis持久化磁盘IO方式及其带来的问题
有Redis线上运维经验的人会发现Redis在物理内存使用比较多,但还没有超过实际物理内存总容量时就会发生不稳定甚至崩溃的问题,有人认为是基于快照方式持久化的fork系统调用造成内存占用加倍而导致的,这种观点是不准确的,因为fork 调用的copy-on-write机制是基于操作系统页这个单位的,也就是只有有写入的脏页会被复制,但是一般你的系统不会在短时间内所有的页都发生了写入而导致复制,那么是什么原因导致Redis崩溃的呢?
答案是Redis的持久化使用了Buffer IO造成的,所谓Buffer IO是指Redis对持久化文件的写入和读取操作都会使用物理内存的Page Cache,而大多数数据库系统会使用Direct IO来绕过这层Page Cache并自行维护一个数据的Cache,而当Redis的持久化文件过大(尤其是快照文件),并对其进行读写时,磁盘文件中的数据都会被加载到物理内存中作为操作系统对该文件的一层Cache,而这层Cache的数据与Redis内存中管理的数据实际是重复存储的,虽然内核在物理内存紧张时会做Page Cache的剔除工作,但内核很可能认为某块Page Cache更重要,而让你的进程开始Swap ,这时你的系统就会开始出现不稳定或者崩溃了。我们的经验是当你的Redis物理内存使用超过内存总容量的3/5时就会开始比较危险了。

到此,相信大家对“Redis中redis-cluster需要注意哪些地方”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

您可能感兴趣的文档:

--结束END--

本文标题: Redis中redis-cluster需要注意哪些地方

本文链接: https://www.lsjlt.com/news/64967.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Redis中redis-cluster需要注意哪些地方
    本篇内容主要讲解“Redis中redis-cluster需要注意哪些地方”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Redis中redis-cluster需要...
    99+
    2024-04-02
  • 使用redis集群需要注意的地方有哪些
    小编给大家分享一下使用redis集群需要注意的地方有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Redis集群相对单机在功...
    99+
    2024-04-02
  • 什么是Cluster以及Redis中为什么需要Cluster
    这篇文章将为大家详细讲解有关什么是Cluster以及Redis中为什么需要Cluster,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。小编将对集群的节点、槽...
    99+
    2024-04-02
  • java继承中需要注意的地方有哪些
    这篇文章给大家分享的是有关java继承中需要注意的地方有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、注意点(1)Java之中只允许多层继承,不允许多重继承,Java存在单继承局限。(2)在Java中,所...
    99+
    2023-06-15
  • ubuntu中安装redis要注意哪些事项
    在Ubuntu中安装Redis时,需要注意以下事项: 检查Ubuntu版本:确保你的Ubuntu系统是最新的版本,并且已经更新到...
    99+
    2024-03-11
    ubuntu redis
  • docker中redis安装要注意哪些事项
    在安装Redis时,需要注意以下事项: 选择合适的Docker镜像:可以选择官方提供的Redis镜像,也可以选择其他第三方维护的...
    99+
    2024-04-09
    docker redis
  • docker中redis安装配置要注意哪些事项
    在安装和配置Redis时,需要注意以下事项: 确保使用官方提供的Redis镜像来安装Redis,避免使用不安全或不稳定的第三方镜...
    99+
    2024-04-16
    docker redis
  • redis导入数据要注意哪些事项
    确保数据格式正确:导入数据前,需要确认数据的格式和结构是否符合Redis支持的数据类型。例如,如果要导入的数据是字符串类型,需要...
    99+
    2024-03-11
    redis
  • Bash 脚本编写有哪些需要注意的地方?
    Bash 脚本是一种非常方便的编程语言,可以用于自动化任务、管理系统、实现批处理等多种应用场景。但是,由于 Bash 脚本的语法比较灵活,很容易出现错误,因此编写 Bash 脚本需要注意一些细节,以确保脚本的正确性和可靠性。本文将介绍 B...
    99+
    2023-07-23
    bash leetcode 并发
  • oracle首次安装需要注意的地方有哪些
    这篇文章给大家分享的是有关oracle首次安装需要注意的地方有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 首次安装时,需要确认的以下列表: 1、创建控制文件时,需要确...
    99+
    2024-04-02
  • ​国外服务器租用需要注意哪些地方
    国外服务器租用需要注意的地方:1. 国外服务器租用时要注意服务器的稳定性和速度,了解带宽的大致情况。2. 注意国外服务器的硬件能力,能否保证业务的高效运行。3. 考察国外服务器是否具有防御能力,建议选择自带防御的服务器。4. 考察供应商的售...
    99+
    2024-04-02
  • 哪些数据需要redis缓存
    这篇文章将为大家详细讲解有关哪些数据需要redis缓存,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。字符串类型是Redis中最为基础的数据存储类型,是一个由字节组成的序列...
    99+
    2024-04-02
  • 在 Go 中使用 NumPy 索引:有哪些需要注意的地方?
    NumPy 是一个广泛使用的 Python 科学计算库,它提供了高效的数组操作和数学函数。然而,由于 Python 的解释执行特性,NumPy 在处理大型数据集时可能会变得缓慢。为了解决这个问题,一些开发者开始使用 Go 语言来实现高性能...
    99+
    2023-06-27
    文件 numpy 索引
  • Java中的HTTP二维码API:有哪些需要注意的地方?
    在当今数字化时代,二维码已经成为了人们常用的信息传递方式之一。二维码可以在不同的场景中使用,比如商业活动、广告宣传、门票验证等等。Java作为一门广泛使用的编程语言,也提供了HTTP二维码API来支持二维码的生成和解码。在使用Java中的...
    99+
    2023-08-23
    http 二维码 api
  • Java关键字在开发中有哪些需要注意的地方?
    Java作为一种面向对象的编程语言,其关键字(keywords)在开发过程中扮演着非常重要的角色。这些关键字有时候会对程序的性能、可读性、可维护性等产生影响。在本篇文章中,我们将探讨Java关键字在开发中需要注意的地方,并附带演示代码。 一...
    99+
    2023-09-12
    关键字 开发技术 文件
  • PostgreSQL中APP在涉及locks时需要注意的地方有哪些
    这篇文章主要讲解了“PostgreSQL中APP在涉及locks时需要注意的地方有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PostgreSQL中A...
    99+
    2024-04-02
  • 基于Java8并行流有哪些需要注意的地方
    这篇文章主要介绍了基于Java8并行流有哪些需要注意的地方,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Java8并行流(parallelStream)注意点在最初使用并行流...
    99+
    2023-06-20
  • Redis实现分布式锁要注意哪些事项
    本文小编为大家详细介绍“Redis实现分布式锁要注意哪些事项”,内容详细,步骤清晰,细节处理妥当,希望这篇“Redis实现分布式锁要注意哪些事项”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学...
    99+
    2024-04-02
  • 使用Redis时必须注意的要点有哪些
    小编给大家分享一下使用Redis时必须注意的要点有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、Redis的使用规范1....
    99+
    2024-04-02
  • js中使用原型对象prototype需要注意的地方有哪些
    这篇文章主要为大家展示了“js中使用原型对象prototype需要注意的地方有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“js中使用原型对象prototy...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作