前往小程序,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点赞举报
我也是在学习中,来一起学习哇
我也是在学习中,来一起学习哇
回复回复点赞举报
推荐阅读
微信小程序 获取 手机验证码 短信验证码 后端功能实现解析
本文原创首发CSDN,链接 https://mp.csdn.net/console/editor/html/106041472 ,作者博客https://blog.csdn.net/qq_41464123 ,转载请带上本段内容,尤其是脚本之家、码神岛等平台,谢谢配合。 ----
Designer 小郑
2023/08/01
1.7K0
微信小程序 获取 手机验证码 短信验证码 后端功能实现解析
Java 调用腾讯云 API 发送短信验证码工具类
目前短信验证码应用场景就太多了,比如 : 用户注册、登录验证、找回密码、支付认证等,我们基本上都是通过第三方的短信服务完成对用户的验证,当然国内比较出名的就是阿里云 and 腾讯云,阿里云短信通讯是原名叫‘大于’,腾讯云没怎么了解过,阿里云的SDK和API官网都有,所以这里演示腾讯云,因为个人认证每个月有100条免费哦呢!!
Lcry
2022/11/29
6.4K0
Java 调用腾讯云 API 发送短信验证码工具类
短信验证码登录
3.进入leancloud官网https://leancloud.cn/ a.点击右上角控制台
PHP开发工程师
2021/04/19
14.3K0
短信验证码登录
【serverless实战】利用腾讯云·云开发实现短信验证码
最近支持了云开发的自定义短信验证码登录功能。第一次体会到利用云开发自身能力,开箱即用的快感。所有的精力集中在业务逻辑和数据库设计上,不用花费过多的精力浪费在运维上。
心谭博客
2020/05/06
3.5K0
Django使用腾讯云发送短信并存入redis
models.py class UserInfo(models.Model): username = models.CharField(verbose_name='用户名', max_length=32) email = models.CharField(verbose_name='邮箱', max_length=32) mobile_phone = models.CharField(verbose_name='手机号', max_length=32) password =
lyudev
2022/08/04
2.1K0
借助云开发实现小程序短信验证码的发送
是不是感觉实现起来特别简单,怎么说呢,我们代码调用其实就这么几行,就可以实现短信的发送,但是腾讯云短信模板的审核比较繁琐,还有我们先去申请短信模板,短信模板审核通过后才可以使用。
编程小石头
2020/01/03
4.5K0
借助云开发实现小程序短信验证码的发送
简单几步,用云开发搞定短信验证码登录
短信验证码登录支持在客户端使用短信验证码进行登录,封装了短信验证码的生成、发送、校验和定时清理逻辑,帮助开发者进行鉴权。登录成功后,用户身份将转化为正式用户。
腾讯云开发TCB
2020/09/08
2.1K0
使用云函数构建短信验证码服务的案例
通过手机短信发送验证码,是最普遍、最安全验证用户真实身份的方式。目前,短信验证码广泛应用于用户注册、密码找回、登录保护、身份认证、随机密码、交易确认等应用场景。
haimingli
2020/12/29
4K0
云开发系列(一):实现验证码登录
终端作为所有用户的真正使用设备,终端开发者也是离用户最近的开发人员,它肩负着将后方提供的一个又一个独立服务整合为体验良好的产品的使命。面对不同的场景,所挑选的后方服务不同,实现方法也不同。
楚歌
2020/11/22
3.7K1
SpringBoot整合腾讯短信服务发送验证码
我这里的参数为code 和 3 code对应我随机生成的二维码 3是二维码的有效期 参数顺序与个数与你自己创建的模板内容有关 例如我的模板为这样所以这么传递参数
暴躁的程序猿
2022/03/23
2.8K0
SpringBoot整合腾讯短信服务发送验证码
腾讯云短信发送功能API-PHP接入
最近测试了一下短信发送功能,接入了腾讯云的API. 登录腾讯云https://cloud.tencent.com/ 国内短信新购三重礼 直达地址:https://cloud.tencent.com/
用户5907943
2019/07/26
9K0
【玩转腾讯云】Python 操作腾讯云短信(sms)详细教程
腾讯云短信 1. 注册腾讯云 <font color="red">已有腾讯云账号可直接跳到第二步</font> 官网 注册, 微信扫码关注腾讯云助手即可快速注册 [biu6v2it00.png] 选择 注册新账号,注册完成后,实名认证一下。选择 个人认证,填写一下信息就ok了。 [x1ldepiqx3.png][xqyn1acnua.png][kp5t4xp99f.png] <span id="sms"></span> 2. 开通腾讯云短信 通过上一步我们已经注册好了腾讯云账号,接下来去开通 腾讯云短信 功
ruochen
2021/04/11
14.4K0
【玩转腾讯云】Python 操作腾讯云短信(sms)详细教程
防短信验证码轰炸怎么防_接口幂等性解决方案
新昕科技在交易反欺诈核心上, 通过AI快速学习机制,结合国际领先的设备指纹技术,首次推出无需图形验证码机制的企业短信防火墙,三步完成下载对接。
全栈程序员站长
2022/11/07
3.4K0
发送手机验证码实现
但是刚才试了,第一次用官方提供的demo发送成功,然后整合到自己项目中,调试时由于参数配置错误导致发送了几次失败后,5次就用完了。按理说成功才能算一次,果断放弃。
我的小碗汤
2018/08/22
13.8K0
发送手机验证码实现
serverless+腾讯云短信实现短信验证码登录
传统开发协作流程(多角色参与): 1.后台开发:短信接口发送短信API、校验短信验证码是否有效API、存储用户验证状态 2.运维开发:接口部署,容灾 3.前端(客户端)开发:前端逻辑开发(调用接口,查询状态等)
腾讯即时通信IM
2020/05/18
17.6K1
serverless+腾讯云短信实现短信验证码登录
用小程序·云开发轻松构建二手书商城小程序丨实战
使用组件开发效率会高很多,避免重复工作,同时可以参考部分组件的写法,还是有很多值得学习的地方的。
腾讯云开发TCB
2019/09/29
1.9K0
一次短信验证码整改实验
这个短信验证码在并发量非常大的情况下有可能会失效,后续会进行整改升级,保证线程安全
阿东
2021/08/16
1.1K0
03 . Django之腾讯云短信
简介 由于项目在注册、登录、找回密码 时需要发送短信验证的功能,我们使用腾讯云短信做。 为什么要用腾讯云短信呢? 因为注册就送 100条免费短信 的额度。 实现 注册腾讯云 注册一个腾讯云账
iginkgo18
2020/09/27
13.6K0
03 .  Django之腾讯云短信
springboot整合redis发送手机验证码注册登录
短信验证码是通过发送验证码到手机的一种有效的验证码系统。主要用于验证用户手机的合法性及敏感操作的身份验证。常见的使用场景有:登录注册、信息修改、异常登录、找回密码等操作。 用户注册发送验证码,然后核实对比用户注册成功采用redis方式将手机号码+key放入redis缓存中设置验证码超时时间,比对用户名和验证码采用数据库存储方式,注册时拿取redis中验证码进行判读验证码是否过期是否匹配。
崔笑颜
2020/06/08
7.6K0
【玩转腾讯云】django 开发Bug追踪平台之用户注册篇(基于腾讯云短信 & redis)
项目预览 👉 Bug追踪平台【云短信买不起了,可通过 手机号:18203503747 密码:ruochen666 登入体验】 项目gitee地址 👉 saas 本篇教程对应代码为 【注册验证码处理】提交,可通过对应分支查看 用户注册篇 首先,总体的<font color="red">思维导图</font>如下: [watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI5MzM5NDY3,siz
ruochen
2021/04/11
27.6K0
【玩转腾讯云】django 开发Bug追踪平台之用户注册篇(基于腾讯云短信 & redis)
相关推荐
微信小程序 获取 手机验证码 短信验证码 后端功能实现解析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档