一、问题描述

2019-02-22凌晨02:42分前后,收到集群中 [10.32.52.8:6500] 实例不可用告警,登陆管理界面查看此实例在正常运行状态,期间未出现机器宕机或实例直接挂掉的现象。

二、排查过程

1、同时排查Redis集群中这对主从实例在问题发生时间点前后的日志,从实例在02:39分开始一次全量的主从同步,02:40-02:49 从实例正在执行“Flush old data”,这个过程Redis不接收任何请求连接,导致监控告警“实例不可用”;

2、查看主实例[10.32.52.13:6400] 日志,在02:24分,由于从实例客户端的输出缓冲区超过了限制,主实例主动关闭了从实例的连接,造成这对主从断连,

其中client-output-buffer-limit slave 512mb 128mb 60 表示从实例客户端输出缓冲区大小超过512M或者超过128M情况下持续60s,主实例会主动关闭从实例连接,

Client List中的omem=441802576 表示从实例输出缓冲区大小为421M,触发了关闭连接操作;

3、主从实例被断开后,从实例再次发起连接请求,由于这个时间点业务有大量的数据写到主实例,主实例自动触发了一次aof重写操作,再次建立主从连接后,主从进行了一次全量同步。

主从全量同步流程如下:

三、根因分析

1、主从在进行全量同步期间,由于数据量太大,从实例清理内存数据耗时长达9分钟,这期间从实例不接受任何连接请求和访问,监控告警实例不可用。

四、解决方法

1、进行水平扩容,降低集群中单实例容量的大小,单实例大小保持在12G最合理,最好不超过15G,减少全量同步消耗的时间。

五、思考

1、集群中一对主从实例的userd_memory相差6G左右,但是实例中的对象数相同,为什么?

解答:这是因为从实例因为以上原因,均有执行过全量复制,全量复制时主实例的rdb文件中不会把过期key持久化,从实例加载主实例的rdb文件,不会有过期key被加载,所以相差的部分我们可以理解为主实例的过期数据。

Redis:slave flush old data造成实例不可用的更多相关文章

  1. Keepalived+nginx+redis主从+tomcat一机多实例实现会话共享

    Keepalived+nginx+redis主从+tomcat一机多实例实现会话共享 2014-09-09 14:14:25 标签:会话共享 主从 原创作品,允许转载,转载时请务必以超链接形式标明文章 ...

  2. 039——VUE中组件之子组件中data使用实例与text-xtemplate的使用方法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. Spring Boot + Spring Data + Elasticsearch实例

    Spring Boot + Spring Data + Elasticsearch实例 学习了:https://blog.csdn.net/huangshulang1234/article/detai ...

  4. Redis的高并发、持久化、高可用架构设计

    就是如果你用redis缓存技术的话,肯定要考虑如何用redis来加多台机器,保证redis是高并发的,还有就是如何让Redis保证自己不是挂掉以后就直接死掉了,redis高可用 我这里会选用我之前讲解 ...

  5. 搭建实时同步data guard的最高可用-切换主备

    搭建实时同步data guard的最高可用-切换主备 首先保证主库在归档模式下:错过N次了 准备二台机器(hostname gw hosts ech0)host-only [root@node1 ~] ...

  6. Redis源码阅读(二)高可用设计——复制

    Redis源码阅读(二)高可用设计-复制 复制的概念:Redis的复制简单理解就是一个Redis服务器从另一台Redis服务器复制所有的Redis数据库数据,能保持两台Redis服务器的数据库数据一致 ...

  7. Redis整合Spring结合使用缓存实例(三)

    一.Redis介绍 什么是Redis? redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set( ...

  8. Redis整合Spring结合使用缓存实例

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文介绍了如何在Spring中配置redis,并通过Spring中AOP的思想,将缓存的 ...

  9. Redis整合Spring结合使用缓存实例(转)

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文介绍了如何在Spring中配置redis,并通过Spring中AOP的思想,将缓存的 ...

随机推荐

  1. MySQL数据库数据迁移:从一个服务器到另一个服务器

    需要两个服务器数据库版本相同才可迁移 1:单个或多个数据库 mysqldump -h远程ip -u用户 -p密码 -P3306 -- -uroot -p -P3306 执行后输入本地数据库密码即可 : ...

  2. ifconfig筛选出IP

    ifconfig     |grep inet    |awk -F: 'NR==1{print}'     |awk  '{print $2}'

  3. 四十二、LAMP与LNMP web架构深度优化实战-第一部

    1.nginx.conf配置文件基本参数优化 1.1 隐藏nginx header内版本号信息 一些特定的系统及服务漏洞一般都和特定的软件版本号有关,我们应尽量隐藏服务器的敏感信息(软件名称及版本等信 ...

  4. 33)new和delete关键字

    ---------------------------------------------------------------------------------------------------- ...

  5. Codeforces 558E A Simple Task(计数排序+线段树优化)

    http://codeforces.com/problemset/problem/558/E Examples input 1 abacdabcda output 1 cbcaaaabdd input ...

  6. 有几张高度不一样的小图片,如何用html+css实现在同一行垂直居中对齐?

    方法一 :使用弹性布局 方法二 :CSS3 transform 属性 父级元素定位 子集元素加属性: position: absolute; top: 50%; transform: translat ...

  7. sockt-浅谈接口性能测试脚本编写

    平时我们做的都是http请求的接口测试,初次接触socket接口还是有点不知如何下手,其实他如http接口请求区别并不是很大,也是接口的链接-发送数据-断开连接这三大步骤来实现: 以下文章转载自:ht ...

  8. iOS UICollectionViewCell 的拖动

    1.长按cell的情况下实现拖动,所以理应想到用长按手势. 2.既然实现移动cell,就要看看UICollectionView 有没有方法或者协议可以移动的.通过查看UICollectionView的 ...

  9. EntityNotFoundException EntityExistException

    package me.zhengjie.common.exception; import org.springframework.util.StringUtils; import java.util. ...

  10. 零基础学习Web前端开发

    目录 技术背景 开发环境 学习过程 参考资料 结束语 技术背景 什么是前端开发? 前端开发是创建Web页面或App等将界面呈现给用户的过程.通过使用 HTML,CSS,JavaScript,以及它们衍 ...