【Azure Redis】因为Redis升级引发了故障转移后的问题讨论

news/2024/11/17 20:19:00/文章来源:https://www.cnblogs.com/lulight/p/18551019

问题描述

Azure Redis是高可用架构,由主节点,从节点 两个节点共同组成。

 

应用客户端连接的Redis服务器的域名,经过DNS解析为上图中Load Balancer的IP,然后连接转发到主节点。发生故障转移(Failover)是LB后的两个Primary和Replica 节点进行了切换,这个期间没有DNS变动。

对于以上情况,有如下疑问:

1:Load Balancer 没有保持和客户端的连接,需要客户端重建连接到新主节点。那为什么Redis连接数指标上一直显示有大量的链接呢?

2:这些大量的连接,是如何产生的呢? 按照应用中的配置计算,达不到上万连接的数量级。如何解释这种情况呢?

3:对于Redis的Server Load指标,每秒创建连接数的并发值,是否有建议呢? 

 

问题解答

1:Load Balancer 没有保持和客户端的连接,需要客户端重建连接到新主节点。那为什么Redis连接数指标上一直显示有大量的链接呢?

【答】:任何时候发生故障转移(主节点离线)或副本节点离线时,其中一个节点会暂时下线。在下线之前,该节点会关闭所有终止于它的客户端连接。预计客户端库会自动重新连接以恢复关闭的连接,Load Balancer 会将该替换连接路由到另一个仍在线的节点。

如果客户端应用程序在切换到第二个缓存时没有正确关闭与原始缓存的连接。如果这些连接确实被放弃且不再接收任何流量或保持活动的 ping,那么服务器将在 10 分钟空闲超时后关闭它们。这些没有正常关闭的连接会导致Redis连接数指标上显示大量连接数。

 

2:这些大量的连接,是如何产生的呢? 按照应用中的配置计算,达不到上万连接的数量级。如何解释这种情况呢?

【答】:缓存内的节点(主节点和副本)发出连接指标,报告的总连接数是每个节点上终止的客户端连接的总和(转发的连接不会被重复计算)。如果这些指标显示的数量高于预期,那么客户端应用程序内部存在连接泄漏,或者 Redis 客户端库内部存在连接泄漏。

 

3:对于Redis的Server Load指标,每秒创建连接数的并发值,是否有建议呢? 

 【答】:为了避免将缓存推到 100% 服务器负载,建议将连接创建速率保持在每秒 30 个以下

当然也可以以更高的速率创建连接(尤其是在更高定价层的Redis上),但这可能会导致Redis Server Load瞬间达到 100% ,并且导致对其它正常的Redis请求的响应变慢,甚至出现Timeout异常。在这种情况下,大部分Redis客户端能正常处理,但是Redisson 无法处理,很可能引发连接风暴。

 

参考资料

Azure Redis 高可用性和灾难恢复  : https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-high-availability#standard-replication-for-high-availability

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/835503.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024-2025-1 20241411《计算机基础与程序设计》第八周学习总结

作业信息这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP/这个作业要求在哪里 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08这个作业的目标 功能设计与面向对象设计,面向对象设计过程,面向对象语言三要素,汇编、编译、解释、执行作业…

WINCC 7.5SP2下VBA创建变量组、变量1

今晚继续学习Wincc下面使用VBA创建变量分组,分组下创建多个变量。新浪审核有点慢,我在这里先发表了。 在变量管理中新建一个S7 连接,配置好连接参数,这个不能通过VBA创建。 打开wincc页面,在VBA编辑器下写下面的脚本:Sub addtags()Dim hmigo As hmigoDim strTagGroup As…

Scrum 冲刺博客-day7

一、每天会议 昨天完成的任务与今天计划完成任务成员 昨天已完成任务 今天计划完成任务董雯霖 个人中心页面 前端页面优化陈金星 后台管理页面 前端页面优化邱列圻 后端接口实现 后端接口开发测试李嘉远 后端接口实现 后端接口开发测试詹洛熙 各项页面测试 各项页面测试工作中遇…

Scrum 冲刺博客-day6

一、每天会议 昨天完成的任务与今天计划完成任务成员 昨天已完成任务 今天计划完成任务董雯霖 交流与反馈页面开发 个人中心页面陈金星 公告信息页面开发 后台管理页面邱列圻 debug 后端接口实现李嘉远 活动心得页面开发 后端口实现詹洛熙 首页页面测试、活动信息页面测试 各项…

团队项目冲刺第三天

课程 2024软件工程作业要求 团队作业4——项目冲刺作业目标 团队项目冲刺第三天团队会议合照燃尽图 当开启进度后,明显就比什么都不做纯聊的状态快多了,也积极多了,照这样下去说不定能提前完成计划表格成员 已完成 下一步洪吉潮 用户注册与登录功能完善设计登录界面交互 主题…

2024-2025-1 20241319 《计算机基础与程序设计》第八周学习总结

作业信息这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计这个作业要求在哪里 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08这个作业的目标 功能设计与面向对象设计 面向对象设计过程 面向对象语言三要素 汇编、编译、解释、执行作业正文 https://www.cnblogs…

团队项目冲刺第二天

课程 2024软件工程作业要求 团队作业4——项目冲刺作业目标 团队项目冲刺第二天团队会议合照燃尽图计划表格成员 已完成 下一步洪吉潮 用户注册与登录功能完善设计用户注册界面 用户注册与登录功能完善设计登录界面交互刘家辉 用户注册与登录功能完善实现邮箱注册功能及验证逻辑…

Scrum 冲刺博客-day5

一、每天会议 昨天完成的任务与今天计划完成任务成员 昨天已完成任务 今天计划完成任务董雯霖 活动信息页面 交流与反馈页面开发陈金星 首页页面 公告信息页面开发邱列圻 活动信息页面 debug李嘉远 活动信息页面 活动心得页面开发詹洛熙 配合测试 首页页面测试、活动信息页面测…

941. 有效的山脉数组

题目 自己写的 class Solution { public:bool validMountainArray(vector<int>& arr) {int l = 0, r = 1;bool up = true, change = false;if (arr.size() < 3)return false;if (arr[r] < arr[l])up = false;while (r < arr.size()){if (up){if (arr[r] <…

团队项目冲刺--Day4

每天举行站立式会议昨天已完成的工作成员 任务徐嘉炜 组织会议,说明项目进度,指导项目发展陈祥意 参与会议,简要讲述应用程序测试的各个模块林楦 参与会议,讲述有关功能界面的UI开发陈大锴 参与会议,协调开发技术与实际需求,记录需求蔡家显 参与会议,讲述测试时的注意事…

团队项目冲刺-day2

每天举行站立式会议 昨天已完成的工作成员 任务徐嘉炜 组织会议,说明项目进度,指导项目发展陈祥意 参与会议,简要讲述应用程序测试的各个模块林楦 参与会议,讲述有关功能界面的UI开发陈大锴 参与会议,协调开发技术与实际需求,记录需求蔡家显 参与会议,讲述测试时的注意事…