博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决Redis/Codis Connection with master lost(复制超时)问题
阅读量:4928 次
发布时间:2019-06-11

本文共 1738 字,大约阅读时间需要 5 分钟。

今天在线上环境中遇到了codis-server报警,按照常规处理流程进行处理,报错步骤如下:

  1. 首先将codis-slave的rdb文件移除,并重启codis-slave
  2. 在codis-dashbord中将codis-slave移除问题codis group
  3. 将codis-slave重新加入codis group,并测试在codis-master中写入数据,查看codis-slave中能否正常读取数据

没想到在新加入codis group同步数据时发生以下报错:

[13029] 15 Oct 13:56:29.063 # Client id=8443510 addr=10.24.193.69:30377 fd=6 name= age=187 idle=187 flags=S db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=16365 oll=3917 omem=100541448 events=rw cmd=psync scheduled to be closed ASAP for overcoming of output buffer limits.   [13029] 15 Oct 13:56:29.160 # Connection with slave 10.24.193.69:6379 lost.   [13029] 15 Oct 13:56:30.607 * Slave 10.24.193.69:6379 asks for synchronization   [13029] 15 Oct 13:56:30.607 * Full resync requested by slave 10.24.193.69:6379   [13029] 15 Oct 13:56:30.607 * Starting BGSAVE for SYNC with target: disk   [13029] 15 Oct 13:56:30.856 * Background saving started by pid 17765   [17765] 15 Oct 13:58:26.910 * DB saved on disk   [17765] 15 Oct 13:58:27.093 * RDB: 969 MB of memory used by copy-on-write   [13029] 15 Oct 13:58:27.492 * Background saving terminated with success

出现以上报错的原因是codis/redis默认配置中repl-timeout的时间为60s,当复制数据的时间超过60s时,codis/redis master就会认为连接超时主动断开连接,也就是Connection with master lost报错。当然简单的理解,复制的过程中肯定有两个参数,一个是复制时长,另一个就是每秒/每分钟复制数据占用服务器资源的大小client-output-buffer-limit参数就决定了客户端输出缓冲区内存使用量,所以我们可以通过调整这两个参数来解决此次问题。

解决Redis/Codis同步超时问题

我们的codis部分配置文件如下:

repl-timeout 60client-output-buffer-limit slave 256mb 64mb 60

上面是master上的slave客户端,默认缓冲区大小限制:当缓冲区使用超过256mb,master会尽快杀掉它;当缓冲区使用大于64mb,且小于256mb的soft limit值时,并持续时间达60秒,也会被Master尽快杀掉。

综上所述

解决超时问题有两种方式:

  • 修改超时时间长短repl-timeout 60
  • 修改缓冲区占用内容大小限制client-output-buffer-limit

当数据同步完成后最好将配置修改为原配置,避免占用服务器资源过高引起其他问题

转载于:https://www.cnblogs.com/Cherry-Linux/p/7671180.html

你可能感兴趣的文章
Java 8 特性 —— 方法引用
查看>>
CSS3环形动画菜单
查看>>
动态设置 layui select 为选中状态
查看>>
Apache不定时宕机
查看>>
[译] 所有你需要知道的关于完全理解 Node.js 事件循环及其度量
查看>>
Unity3D初学心得
查看>>
学破解 <二> PE格式之IMAGE_NT_HEADERS
查看>>
laravel homestead
查看>>
https和http共存的nginx简单配置
查看>>
利用WGET下载文件,并保存到指定目录
查看>>
AO代码:VB6代码迁移到NET的几大理由(摘自ESRI文档片段)
查看>>
HDOJ 1518 Square
查看>>
Finance 网站收集
查看>>
如何使用Git 下载GitHub的东西
查看>>
C#实现联合体
查看>>
[BZOJ 1085] [SCOI2005] 骑士精神 [ IDA* 搜索 ]
查看>>
nignx 502错误不能使用/的路径方式 即pathinfo
查看>>
java APIs for database -------- JDBC (2)<statement>
查看>>
Xpath
查看>>
LoadRunner 参数化之 连接数据库进行参数化
查看>>