前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Redis集群主备缓存区满了导致主备频繁倒换

Redis集群主备缓存区满了导致主备频繁倒换

作者头像
zeekling
发布于 2022-07-17 07:31:40
发布于 2022-07-17 07:31:40
1K00
代码可运行
举报
运行总次数:0
代码可运行

问题现象

Redis 频繁进行主备倒换,通过查看主实例的日志:redis.log发现下面报错:

代码语言:javascript
代码运行次数:0
运行
复制
Client id=1317049445 addr=192.168.2.45:8004 fd=40 name= age=314 idle=0 flags=S db=0 sub=0
 psub=0 multi=-1 qbuf=0 qbuf-free=32568 obl=0 oll=4430 omem=761143439 events=rw cmd=psync 
scheduled to be closed ASAP for overcoming of output buffer limits

其中:psync scheduled to be closed ASAP for overcoming of output buffer limits 明显就是问题所在,那是什么问题呢。

解决思路

于是我在源码中搜索了scheduled to be closed ASAP for overcoming of output buffer limits(psync明显是一个命令,就不用在代码里面搜索了)。

于是,我找到了下面代码:

代码语言:javascript
代码运行次数:0
运行
复制
/* If the source client contains a partial response due to client output
     * buffer limits, propagate that to the dest rather than copy a partial
     * reply. We don't wanna run the risk of copying partial response in case
     * for some reason the output limits don't reach the same decision (maybe
     * they changed) */
    if (src->flags & CLIENT_CLOSE_ASAP) {
        sds client = catClientInfoString(sdsempty(),dst);
        freeClientAsync(dst);
        serverLog(LL_WARNING,"Client %s scheduled to be \
                closed ASAP for overcoming of output buffer limits.", client);
        sdsfree(client);
        return;
    }

单从代码来看,看不出啥,但是代码上面存在注释,我使用我那四级水平翻译了下,可以看出缓存区满了,于是可以想到可能主备同步的时候可能会限制缓存区大小,并且这个缓存区被占满了。

于是我又在redis.conf中找了缓冲区的相关配置,找到了下面是三个:

代码语言:javascript
代码运行次数:0
运行
复制
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

配置格式为:

代码语言:javascript
代码运行次数:0
运行
复制
client-output-buffer-limit <class> <hard limit> <soft limit> <soft seconds>

具体含义:

  • class:我理解就是缓冲区的类型,目前Redis的缓冲区分为三个:
    • 普通客户端:normal
    • 主备同步:replica
    • 发布订阅:pubsub
  • hard limit: 缓冲区大小的硬性限制。当达到这个限制之后,连接就会断开。
  • soft limit: 缓冲去大小的软性限制。
  • soft seconds: 缓冲区大小达到了(超过)soft limit值的持续时间。

因此我们可以将client-output-buffer-limit replica 256mb 64mb 60作出简单调整,重启Redis服务之后解决这个问题。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
2 条评论
热度
最新
看着全网最详细的,但仍看不懂,自学小白太难了
看着全网最详细的,但仍看不懂,自学小白太难了
11点赞举报
我也是在学习中,来一起学习哇
我也是在学习中,来一起学习哇
回复回复点赞举报
推荐阅读
gitlab-CI 持续集成以及runner的配置简版
在我们完成项目开发后,提交到git,当监听提交后,自动进行编译,并进行项目的部署,是不是一想就很爽,所以下面引入我们的主角 —— gitlab-CI,中文文档 。
神葳
2021/01/22
2.3K0
gitlab-CI 持续集成以及runner的配置简版
二 GitLab CI服务器的搭
CI,Continuous Integration,持续集成,是软件开发过程中一个非常重要的环节,在互联网敏捷开发的过程中,持续集成通常用来进行日常编译和自动化测试,来保证及时发现提交的问题,避免影响项目进度。 通常持续集成的过程包括:
没有故事的陈师傅
2020/06/24
2.2K0
Gitlab-GitlabRunner注册
您可以通过重复register命令在同一台主机上注册多个运行器,每个运行器配置不同。
郭顺发
2022/05/13
1.8K0
Gitlab GitlabRunner注册
您可以通过重复register命令在同一台主机上注册多个运行器,每个运行器配置不同。
郭顺发
2023/07/17
5240
GitLab Runner介绍及安装
GitLab Runner是一个开源项目,用于运行您的作业并将结果发送回GitLab。它与GitLab CI一起使用,GitLab CI是GitLab随附的开源持续集成服务,用于协调作业。
没有故事的陈师傅
2021/03/19
7.3K0
1.基于GitLab代码仓库的持续集成基础配置和使用
[TOC] 0x00 前言简述 CI/CD介绍 Q:我们常说的CI/CD是什么? CI 为 Continuous Integration 的缩写持续集成,可以理解为代码变动提交后,自动执行代码编译、代
全栈工程师修炼指南
2022/09/29
3.9K0
1.基于GitLab代码仓库的持续集成基础配置和使用
gitlab-ci的简易入门—基于python项目的CI演示
使用github上开源的一个python的demo项目,地址为:https://github.com/imooc-course/docker-cloud-flask-demo 打开自己的gitlab,点击New project,把项目导入。
没有故事的陈师傅
2020/07/01
3.9K0
gitlab-ci的简易入门—基于python项目的CI演示
持续构建与部署之Gitlab-Runner
服务架构的轻量化一直都是很多架构师的追随目标,慢慢的演变成现在的微服务的使用,轻量简洁的服务架构不仅仅减少技术人员的维护压力,还大大的降低了技术人员的学习成本。
公众号: 云原生生态圈
2021/11/15
7550
持续构建与部署之Gitlab-Runner
Gitlab CI/CD 实践一:Gitlab Runner 安装到 K8S 集群
Gitlab Runner可以直接使用二进制、Docker或者k8s来部署,而使用k8s部署带来的的好处是:合理利用资源,工作容器会被调度到资源相对空闲的节点(构建是一个比较耗费资源的过程)。
Yuyy
2022/09/21
3.7K0
Gitlab CI/CD 实践一:Gitlab Runner 安装到 K8S 集群
gitlab 注册runner
向GitLab-CI注册一个Runner需要两样东西:GitLab-CI的url和注册token。 其中,token是为了确定你这个Runner是所有工程都能够使用的Shared Runner还是具体某一个工程才能使用的Specific Runner。 如果要注册Shared Runner,你需要到管理界面的Runners页面里面去找注册token。
py3study
2018/08/02
2.8K1
Docker搭建自己的Gitlab CI Runner
哎_小羊
2018/01/02
15K0
Docker搭建自己的Gitlab CI Runner
GitLab Runner安装注册配置管理
GitLab Runner是一个开源项目,用于运行您的作业并将结果发送回GitLab。它与GitLab CI结合使用,GitLab CI是GitLab随附的用于协调作业的开源持续集成服务。
DevOps云学堂
2020/05/08
7.7K0
GitLab Runner安装注册配置管理
依托于GitLab持续集成基础配置和使用
[TOC] 0x00 前言简述 Q:我们常说的CI/CD是什么? CI 为 Continuous Integration 的缩写持续集成,可以理解为代码变动提交后,自动执行代码编译、代码打包、代码测试
全栈工程师修炼指南
2020/10/23
2.2K0
依托于GitLab持续集成基础配置和使用
GitLabRunner注册
进入group -> Settings -> CI/CD -> Runners -> Group Runners
章工运维
2024/03/14
2160
打造企业级自动化运维平台系列(十):Gitlab Runner 实现 CI/CD 详解
Gitlab实现CICD的方式有很多,比如通过Jenkins,通过Gitlab Runner等,今天主要介绍后者。Gitlab在安装的时候,就默认包含了Gitlab CI的能力,但是该能力只是用于协调作业,并不能真的去执行作业,因此需要搭配Gitlab Runner来作为执行器实现具体的CICD工作。Gitlab Runner可以被安装在任意支持的系统上,比如Linux、Windows、Mac,甚至也可以运行在Docker、Kubernetes集群上。更多关于构建企业自动化运维平台系列的
民工哥
2024/01/18
7450
打造企业级自动化运维平台系列(十):Gitlab Runner 实现 CI/CD 详解
GitlabCI与Kubernetes实践·部署GitLab-Runner
Gitlab的持续集成功能依赖于Gitlab Runner组件完成,gitlab runner作为Gitlab这个中控机的执行者,按照代码仓库里面.gitlab-ci.yaml文件里面预定义的任务job按照指定的顺序或并发的执行完成系列的编译、测试、部署等操作,也就是说只要按照.gitlab-ci.yaml的配置格式[1]将写好的.gitlab-ci.yml文件放在代码仓库内,待下一次代码提交commit的时候就会自动的触发仓库绑定的Gitlab Runner去按照.gitlab-ci.yml里面配置的指定的执行。
公众号: 云原生生态圈
2020/11/02
1.9K0
GitlabCI与Kubernetes实践·部署GitLab-Runner
I-team博客的gitlab-runner持续集成实践
做为一个略微看过nodejs语法,但又不懂nodejs的攻城狮,搭建hexo环境很是麻烦,要考虑到翻墙、版本兼容等问题。于是乎,博主每换一个电脑,为了能继续发博客,都需要在新电脑上花一天时间重新搞一下 hexo 环境,楼主感觉还是有简洁的方案来实现我一提交代码就可以自动发布博客,不需要再手动操作一波,这样岂不美哉。so,也就有了今天的经历,代码可以持续集成,博客也可以。楼主的解决方案是使用gitlab与gitlab-runner实现博客部署的持续集成,效果真的不要太好。
haifeiWu
2018/09/11
1.2K0
I-team博客的gitlab-runner持续集成实践
kubernetes-CI/CD
原因就是运行git remote add origin http://45.77.**.**/root/webmaven.git是默认是80端口,由于你修改了80端口,所以就会报错,如果修改为88端口,则应该运行:git remote add origin http://45.77.**.**:88/root/webmaven.git来指明端口。貌似修改了22端口会影响https。
茶半香初
2021/11/26
5110
kubernetes-CI/CD
使用 GitLab Runner
理解了上面的基本概念之后,有没有觉得少了些什么东西 —— 由谁来执行这些构建任务呢? 答案就是 GitLab Runner 了!
用户8851537
2021/08/04
2.9K0
2019-03-26 Gitlab的第一个shared Runners配置(shared类型)
在安装和配置完gitlab后,普通的代码管理功能都能正常使用了,现在配置一下gitlab runner用于代码的自动编译和部署。我下面的实例中定义的是shared类型的runner,所有用户可以共享。
Albert陈凯
2019/04/09
6.7K0
2019-03-26 Gitlab的第一个shared Runners配置(shared类型)
相关推荐
gitlab-CI 持续集成以及runner的配置简版
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档