【故障公告】取代 memcached 的 redis 出现问题造成网站故障(已解决)

6月19日开始,我们将博客站点的缓存服务器从 memcached 换成了 redis,稳定运行了3天,今天上午访问高峰突然出现问题,在 11:00-12:30 期间影响了网站的正常访问,由此给您带来麻烦,请求谅解。

在故障期间,日志中大量的等待响应超时错误

StackExchange.Redis.RedisTimeoutException: Timeout awaiting response

其中的一个典型日志:

StackExchange.Redis.RedisTimeoutException: Timeout awaiting response (outbound=0KiB, inbound=6697KiB, 2937ms elapsed, timeout is 2000ms), command=GET, next: GET blog_v2_BlogPosts-291733, inst: 0, qu: 0, qs: 31, aw: False, bw: SpinningDown, rs: ReadAsync, ws: Idle, in: 0, in-pipe: 0, out-pipe: 0, serverEndpoint: 192.168.12.28:6379, mc: 1/1/0, mgr: 5 of 10 available, clientName: blog-web-c845b6686-zpl4s(SE.Redis-v2.5.61.22961), PerfCounterHelperkeyHashSlot: 11935, IOCP: (Busy=0,Free=1000,Min=20,Max=1000), WORKER: (Busy=19,Free=32748,Min=50,Max=32767), POOL: (Threads=73,QueuedItems=5,CompletedItems=2170212), v: 2.5.61.22961 (Please take a look at this article for some common client-side issues that can cause timeouts: https://stackexchange.github.io/StackExchange.Redis/Timeouts)

在确认是 redis 引起的故障后,我们立即采取了笨方法,将之前使用 memcached 缓存的部分切换回 memcached,切换后除了个人博客博文列表页面,其他访问都已恢复正常。

个人博客博文列表一级缓存已经切换到 memcached,但二级缓存还在使用 redis,所以依然受 redis 问题影响。

这时,我们重启了 redis,但重启后问题依旧。本来我们以为是并发高触发的问题,但我们的以为错了。我们重新进行了以为,既然不是并发多的原因,那可能是数据多的原因,flushall 清空 redis 中的数据后,很快恢复了正常。

【故障公告】取代 memcached 的 redis 出现问题造成网站故障(已解决)

接下来我们会进一步分析问题的原因,优化 redis 的部署,目前是在 k8s 集群上部署的非高可用 redis 集群(3个节点)。

另外,上次的 k8s 集群翻船问题与我们升级 k8s 时没有升级 calico 网络组件有关,后来把网络组件换成了 cilium,本想上 eBPF 拉风一下,结果发现阿里云负载均衡与 eBPF 存在兼容问题,只好暂时作罢。

更新 6月26日 14:32

进一步排查后发现 “Timeout awaiting response” 问题与我们通过连接池使用多个 ConnectionMultiplexer 有关,连接池越大,越容易出现 timeout。通过 StackExchange.Redis 源码中的注释 ConnectionMultiplexer.cs#L22 看了 PipelinesMultiplexers 之后知道单个 ConnectionMultiplexer 能够应对高并发场景,难怪 StackExchange.Redis 一直没有实现连接池。我们使用连接池是受 StackExchange.Redis.Extensions 的影响,现在看来没有必要而且自找麻烦。

知道这个原因后,解决方法很简单,将 PoolSize 设置为 1。取代 memcached 的 redis 服务已重新上线。

PoolSize=1 的疗效昨天已经得到验证,在切换回 memcached 后,个人博客博文列表一级缓存还在使用 redis ,在日志中依然会出现一些 timeout 异常,当时 PoolSize 值是 10,昨天改为 1 之后 timeout 异常就全部消失。

Original: https://www.cnblogs.com/cmt/p/16405164.html
Author: 博客园团队
Title: 【故障公告】取代 memcached 的 redis 出现问题造成网站故障(已解决)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/528790/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • python 练习题:计算的BMI指数,并根据BMI指数条件选择

    小明身高1.75,体重80.5kg。请根据BMI公式(体重除以身高的平方)帮小明计算他的BMI指数,并根据BMI指数:低于18.5:过轻18.5-25:正常25-28:过重28-3…

    Linux 2023年6月8日
    0120
  • jenkins使用shell脚本执行nohup java -jar包失败

    一、问题 通过jenkins执行shell脚本时,脚本中是通过nohup java -jar &的方式启动,显示执行成功,但是服务却没启动,脚本如下: #! /bin/ba…

    Linux 2023年5月28日
    0166
  • Question07-查询学过”张三”老师授课的同学的信息

    * SELECT DISTINCT Student.* FROM Student , SC , Course , Teacher WHERE Student.SID = SC.SI…

    Linux 2023年6月7日
    0103
  • (转)WEB页面导出为Word文档后分页&横向打印的方法

    WEB页面导出为Word文档后分页&横向打印的方法title >HEAD >/// * * @param {Object} cont 要导出的html元素内容的…

    Linux 2023年6月7日
    0115
  • 大数据——搭建第一台Hadoop主机

    工具准备 1、VMware 2、CentOS 7 最小安装版 3、远程工具推荐使用 FinalShell 安装系统 1、打开VMware,根据自己的情况配置好虚拟机,选择系统镜像就…

    Linux 2023年5月27日
    0106
  • 洛谷P3372–线段树代码模板1

    时空限制:1000ms,128M 数据规模: 对于30%的数据:N Original: https://www.cnblogs.com/ygsworld/p/11279732.ht…

    Linux 2023年6月7日
    0113
  • 超好用的UnixLinux 命令技巧 大神为你详细解读

    1、删除一个大文件 我在生产服务器上有一个很大的200GB的日志文件需要删除。我的rm和ls命令已经崩溃,我担心这是由于巨大的磁盘IO造成的,要删除这个大文件,输入: > /…

    Linux 2023年6月14日
    095
  • Docker自定义镜像无容器日志输出

    Docker自定义镜像无容器日志输出 因工作环境需要,需自己定制一个python环境的镜像,但制作完之后, docker logs发现无日志输出,经文档查询原来需要将日志重定向到标…

    Linux 2023年6月8日
    083
  • JAVAssist字节码操作

    Java 动态性的两种常见实现方式 字节码操作 反射 运行时操作字节码可以让我们实现如下功能: 动态生成新的类 动态改变某个类的结构(添加/删除/修改新的属性/方法) 优势: 比反…

    Linux 2023年6月13日
    089
  • 海思3559 FFMPEG移植

    具体参考下面这篇帖子http://bbs.ebaina.com/forum.php?mod=viewthread&tid=79863&pid=156755&…

    Linux 2023年6月13日
    087
  • phpcms安装

    【快速安装开始】 下载解压phpcms,复制安装文件到站点目录”/opt/html”里,给予权限(官网无法访问了,所以下载地址需自行寻找上传) cd /us…

    Linux 2023年6月6日
    068
  • 搭建mount+nfs远程挂载

    需求背景: 192.168.10.100 源服务器 目录:/root/test 目录属主属组普通用户,权限777 192.168.10.111 目标服务器 目录:/root/tes…

    Linux 2023年6月8日
    0103
  • JS实现整个DIV里的字号整体放大或缩小

    JS实现对DIV里内容的字体方法或缩小 html代码 只写主要代码,样式可以自己写 <div class="content_sms"> &#x8FD…

    Linux 2023年6月7日
    083
  • 罗德岛

    自从转行以后就建博了,一直没有动手写内容,今天开始写。 主要记录技术上的积累和项目上的工作感悟。 这里就是罗德岛,就在这里跳。 Original: https://www.cnbl…

    Linux 2023年6月6日
    080
  • 大数据Hadoop集群的扩容及缩容(动态添加删除节点)

    添加白名单和黑名单 白名单,表示在白名单的主机IP地址可以用来存储数据 企业中;配置白名单,可以尽量防止黑客恶意访问攻击。 配置白名单步骤如下:原文:sw-code 1)在Name…

    Linux 2023年6月8日
    0121
  • NO.1 通讯录管理系统+源代码(C++)

    功能描述:显示简单的菜单,供用户选择操作 实现步骤:直接cout输出 功能描述:根据用户不同的操作代码选择,进入不同的功能,我们使用switch分支结构进行搭建 实现步骤:用whi…

    Linux 2023年6月7日
    0156
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球