【Azure Redis】AKS中使用Lettuce连接Redis Cache出现 timed out 问题的解决思路

news/2024/9/17 14:23:03/文章来源:https://www.cnblogs.com/lulight/p/18372464

问题描述

使用 Lettuce 客户端,在AKS环境中连接Azure Redis服务,出现超时错误。

错误消息:

Redis command timed out , command timed out after 1 minute(s). 

错误截图:

 

解决思路

当出现Redis客户端连接不上时,需要先排查Redis服务器的状态,比如Server Load是否处于高位(90%以上),CPU是否处于高位,然后查看连接数的情况(Connections)。

如果查看指标,并没有发现Redis服务的异常情况后,可以从一下几个方面来分析问题:

1)Azure Redis Cache的默认超时时间是10分钟,如果当前已经与Azure Redis Cache建立的连接超过10分钟没有使用,Azure Redis Cache服务端将会自动清理该连接,如果后续客户端尝试使用该已经断掉的连接去访问Azure Redis Cache,就需要重新建立连接。 详情请见:https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-best-practices-connection#idle-timeout

 

2)Lettuce 客户端连接Redis服务,当与服务之间的网络连接出现异常时,会导致客户端15分钟左右时间的Timeout 的已知问题

Lettuce开源社区中的相关问题讨论( https://github.com/lettuce-io/lettuce-core/issues/2082 ),当Lettuce底层TCP连接与Redis Server实际断开但客户端依然保持socket端口开放的时候,底层KeepAlive 以及Lettuce本身的保活机制不会生效,从而导致底层TCP连接成为orphan connection,进而导致Socket 依靠OS 底层tcp_retries 机制完成探测,在TCP重传15次后(大致15分钟)进行Redis连接的重新建立。

优化建议:在6.2.7.RELEASE 后 可以通过 SocketOptions 中的TCP_USER_TIMEOUT参数设置业务最大接收的timeout时间。具体配置可以参照: https://github.com/lettuce-io/lettuce-core/issues/2082#issuecomment-1702782618

        // Config TCP KeepAliveSocketOptions socketOptions = SocketOptions.builder().keepAlive(KeepAliveOptions.builder().enable().idle(Duration.ofSeconds(TCP_KEEPALIVE_IDLE)).interval(Duration.ofSeconds(TCP_KEEPALIVE_IDLE/3)).count(3).build()).tcpUserTimeout(TcpUserTimeoutOptions.builder().enable().tcpUserTimeout(Duration.ofSeconds(TCP_USER_TIMEOUT)).build()).build();

 

3)对于偶发性的 timed out , 常见的原因有:应用使用的连接池中的连接长时间空闲,在复用连接池中的连接时。因为平台底层的TCP Socket 已经Close,而连接池中的连接依旧保持空闲状态,进而导致客户端请求超时。

  • 使用客户端重试以及keep-alive 机制,可以使得连接池中的连接保活,达到尽量减少问题的发生的可能性。
  • 对于使用连接池的情况,建议把TCP keep-alive 的间隔减小到3min 以下。

 

 参考资料

  1. https://github.com/lettuce-io/lettuce-core/issues/2082 
  2. https://github.com/lettuce-io/lettuce-core/issues/2082#issuecomment-1702782618
  3. https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-best-practices-connection#idle-timeout

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

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

相关文章

关键字、标识符、注释三剑客

关键字概述 被Java语言赋予特定含义的单词 关键字特点 组成关键字的字母全部小写 关键字注意事项 goto和const作为保留字存在,目前并不使用 类似IDEA这样的集成工具,针对关键字有特殊的颜色标记,非常直观标识符概述 就是给类,接口,方法,变量等起名字时使用的字符序列 组成规则…

三步高考大捷

hi, ____________,见字如晤,展信舒颜。 首先,预祝你考上理想的大学。 当然,这并不容易。正因为有难度,我们才一起引入 OKR 方法论 OKR(Objectives and Key Results, 目标与关键结果)。 大名鼎鼎的 OKR 最早是由 Goolge 这个全球聚集最聪明人的企业管理方法。 后来,人们发…

Python个人收入影响因素模型构建:回归、决策树、梯度提升、岭回归

全文链接:https://tecdat.cn/?p=37423 原文出处:拓端数据部落公众号“你的命运早在出生那一刻起便被决定了。”这样无力的话语,无数次在年轻人的脑海中回响,尤其是在那些因地域差异而面临教育资源匮乏的年轻人中更为普遍。在中国,这种现象尤为明显:没有生在大城市的他们…

1092. 最短公共超序列

非常好的一道理解LCS本质的题目class Solution { public:string longestCommonSubsequence(const string str1, const string str2) {int m = str1.length();int n = str2.length();// 创建一个二维数组来存储LCS的长度vector<vector<int>> dp(m + 1, vector<in…

【转】管理者,一定要有道-法-术的思维模型

我有一个观点:作为管理者,必须要有“道法术”的思维模型。 具备这样的思维,才能穿透表象,站在更高的维度去解决管理上遇到的问题。 今天,我们一起来聊聊这个话题。 术:学工具、学方法 问题来了,什么是术? 王东岳老师说:术,就是看你能驱动什么。 简单来说,术,就是工…

更漂亮的 7-Zip

搬运更漂亮的 7-Zip(并添加了 Jar 关联) - 『精品软件区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn 作为一款强大的开源压缩软件,7-Zip 的 UI 实在是太丑了,依然是上个世纪的风格。这里通过修改源代码并重新编译的方式,更换了它的文件管理器图标和文件…

Summarization with Langchain

教程链接 — https://youtu.be/w6wOhSThnoo 摘要是自然语言处理(NLP)的一个关键方面,它能够将大量文本浓缩成简洁的摘要。LangChain,作为NLP领域中的一个强大工具,提供了三种不同的摘要技术:stuff、map_reduce和refine。每种方法都有其独特的优点和局限性,使它们适用于不…

R绘图(06)——带errorbar的柱状图

每次找R绘图美化都很麻烦,索性自己写个笔记慢慢补充绘图美化的指令### 生成数据 ### # 设置种子以获得可重复的结果 set.seed(222) # 生成字符序列 "AAAABBBB" char_sequence <- c("A", "A", "A", "A", "B", …

WPF:MVVM的由来与属性绑定的过程

WPF:MVVM的由来与属性绑定的过程 1、MVVM (1)MVVM是什么? ​ MVVM(Model-View-ViewModel)是一种软件架构设计模式MVVM模式。有助于分离应用程序的业务逻辑和用户界面层,使得开发过程更易于管理,同时也便于单元测试。Model? 现实世界中对象的抽象结果。 View? View=U…

异或的常用性质

性质 1. 百度百科给的最主要的性质就是归零和结合,其他的就都是拓展了。 例题:P1469 2. \(a \bigoplus b<=a+b\) 关于这个不等式比较好的理解为异或就是不进位的加法 例题:luoguP5514 应用 异或哈希 异或跟hash一样,也是会发生冲突的 例如:$1 \bigoplus 2 = 5 \bigopl…

虚拟机的搭建

1.Download VMware Workstation 下载和安装关注微信公众号“软件安装大神”找到虚拟机VMware16 2.DownloadingKali Linux 搜索官网:Kali Linux | Penetration Testing and Ethical Hacking Linux Distribution 解压,然后在第一步 虚拟机VMware16安装成功后打开第二部解压文…

AcWing 1078. 旅游规划 (DFS找树的直径+直径中点性质求解,无DP)

原题链接 题目描述算法 引用自 树的直径 - OI-Wiki:若树上所有边边权均为正,则树的所有直径中点重合 证明:使用反证法。设两条中点不重合的直径分别为 \(\delta(s,t) 与 \delta(s,t)\),中点分别为 \(x\) 与 \(x\)。显然,\(\delta(s,x) = \delta(x,t) = \delta(s,x) = \del…