《.NET 5.0 背锅案》第3集-剧情反转:EnyimMemcachedCore 无罪,.NET 5.0 继续背锅
今天晚上基于第2集中改进版的 EnyimMemcachedCore 进行了发布,发布过程中故障重现,最大的嫌犯 EnyimMemcachedCore 被证明无罪,暂时委屈 .NET 5.0 继续背锅。
发布操作启动后,Kubernetes 集群在 20:05 左右开始更新 pod
在 20:09 之前一切正常,20:09 开始日志开始出现 tcp 连接相关的异常。
最先报异常的是 redis 客户端 StackExchange.Redis
StackExchange.Redis.RedisTimeoutException: Timeout awaiting response (outbound=0KiB, inbound=0KiB, 1120ms elapsed, timeout is 1000ms), command=SET, next: SET blog_v2_blogpost-stats-192308-8057845
接着是 EnyimMemcachedCore
2020-11-16 20:09:03.901 [Error] Pool is full, timeouting. 10.0.78.156:11211
Enyim.Caching.Configuration.MemcachedClientConfiguration
日志中一堆上面的2个错误交替出现,大概是这个时候故障开始出现,访问速度开始变慢。
接着 20:12~20:17 期间出现非常神奇的事情,日志中只有不到10条的记录,这根本不可能,而且这时处于故障期间,大量请求响应缓慢,只有一个原因可以解释——整个系统 hang 住了,似乎在这段时间所有线程都卡住了,.NET 5.0 的世界似乎时间停止了。
20:18 开始日志记录又开始大量出现,这时正好所有 pod 更新完毕
虽然 pod 更新完成了,但从日志中看还是有 pod 在重启,可能是因为健康检查失败而重启。
20:19 开始情况变得更糟
Redis客户端连接超时的情况继续
StackExchange.Redis.RedisTimeoutException: Timeout awaiting response"
EnyimMemcachedCore 无法从 socket pool 拿到连接的情况继续
Pool is full, timeouting
EnyimMemcachedCore 出现新的异常情况
2020-11-16 20:19:29.373 [Warning] Socket bound to "10.0.78.156:11211" has 20 unread data! This is probably a bug in the code. InstanceID was 59b0c942-47d4-4977-bd27-668ed4972459.
HttpClient 也开始出现连接超时
System.Threading.Tasks.TaskCanceledException: The request was canceled due to the configured HttpClient.Timeout of 3 seconds elapsing.
EnyimMemcachedCore 各种错误
[Error] Timeout to reset an acquired socket.
[Error] Acquire failed. Maybe we're already disposed?
...
20:20 开始出现大量数据库连接超时的情况,故障全面爆发。
System.InvalidOperationException: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached
似乎从时间停止状态恢复的 .NET 5.0 世界一切错乱了,赶紧回退。
这时开始向 .NET Core 3.1 版回退,在 20:25 左后回退全部完成后,一切恢复了正常。
这次完整地经历了整个故障发生的过程,真是惊心动魄,经历之后让人茫然不知所措,不管怎么样,这个锅不能让 EnyimMemcachedCore 背,我们博客系统的代码也背不起(就是我们想写也写不出能让 .NET 5.0 runtime 世界天翻地覆的代码),还是先委屈 .NET 5.0 继续背锅吧,虽然这会招来一片骂声,但我们实在找不出可以委以重任的替代者。
《.NET 5.0 背锅案》第3集-剧情反转:EnyimMemcachedCore 无罪,.NET 5.0 继续背锅的更多相关文章
- 《.NET 5.0 背锅案》第7集-大结局:捉拿真凶 StackExchange.Redis.Extensions 归案
第1集:验证 .NET 5.0 正式版 docker 镜像问题 第2集:码中的小窟窿,背后的大坑,发现重要嫌犯 EnyimMemcachedCore 第3集-剧情反转:EnyimMemcachedCo ...
- 《.NET 5.0 背锅案》第4集:一个.NET,两手准备,一个issue,加倍关注
第1集:验证 .NET 5.0 正式版 docker 镜像问题 第2集:码中的小窟窿,背后的大坑,发现重要嫌犯 EnyimMemcachedCore 第3集-剧情反转:EnyimMemcachedCo ...
- 《.NET 5.0 背锅案》第5集-案情大转弯:都是我们的错,让 .NET 5.0 背锅
第1集:验证 .NET 5.0 正式版 docker 镜像问题 第2集:码中的小窟窿,背后的大坑,发现重要嫌犯 EnyimMemcachedCore 第3集-剧情反转:EnyimMemcachedCo ...
- 《.NET 5.0 背锅案》第6集-案发现场回顾:故障情况下 Kubernetes 的部署表现
第1集:验证 .NET 5.0 正式版 docker 镜像问题 第2集:码中的小窟窿,背后的大坑,发现重要嫌犯 EnyimMemcachedCore 第3集-剧情反转:EnyimMemcachedCo ...
- 《.NET 5.0 背锅案》第1集:验证 .NET 5.0 正式版 docker 镜像问题
今天我们分析了博客站点的2次故障(故障一.故障二),发现一个巧合的地方,.NET 5.0 正式版的 docker 镜像是在11月10日提前发布上线的. 而在11月10日下午4点左右,由于 CI 服务器 ...
- 坎坷路:ASP.NET Core 1.0 Identity 身份验证(中集)
上一篇:<坎坷路:ASP.NET 5 Identity 身份验证(上集)> ASP.NET Core 1.0 什么鬼?它是 ASP.NET vNext,也是 ASP.NET 5,以后也可能 ...
- redis 4.0.8 源码包安装集群
系统:centos 6.9软件版本:redis-4.0.8,rubygems-2.7.7,gcc version 4.4.7 20120313,openssl-1.1.0h,zlib-1.2.11 y ...
- SELECT INTO和INSERT INTO SELECT的区别 类似aaa?a=1&b=2&c=3&d=4,如何将问号以后的数据变为键值对 C# 获取一定区间的随即数 0、1两个值除随机数以外的取值方法(0、1两个值被取值的概率相等) C# MD5 加密,解密 C#中DataTable删除多条数据
SELECT INTO和INSERT INTO SELECT的区别 数据库中的数据复制备份 SELECT INTO: 形式: SELECT value1,value2,value3 INTO Ta ...
- 生产环境elasticsearch5.0.1和6.3.2集群的部署配置详解
线上环境elasticsearch5.0.1集群的配置部署 es集群的规划: 硬件: 7台8核.64G内存.2T ssd硬盘加1台8核16G的阿里云服务器 其中一台作为kibana+kafka连接查询 ...
随机推荐
- C# 中 System.Index 结构体和 Hat 运算符(^)的全新用法
翻译自 John Demetriou 2019年2月17日 的文章 <C# 8 – Introducing Index Struct And A Brand New Usage For The ...
- (转载)跟Classic ARM 处理器说拜拜——Atmel SAMA5D3 Xplained开发板评测
2014 年 4 月 10 日 时间: 下午 3:15 作者: 幸得安然 电子产业的蓬勃发展带来了史无前例的生活.生产大跃进,但是,人们在享受发展喜悦的同时又不得不面临现实现状的囧境--在以移动电子设 ...
- docker-搭建 kafka+zookeeper集群
拉取容器 docker pull wurstmeister/zookeeper docker pull wurstmeister/kafka 这里演示使 ...
- ps 树形显示
ps -axjf|grep swoft
- 020_Typora使用
目录 Typora使用 下载 安装 设置 使用 Typora使用 Typora插入本地图片为本地路径,网络上无法查看,所以建议只插入网络图片. 下载 百度搜索官网 下载 安装 设置 视图->显示 ...
- 使用MediaRecorder录音
Android提供了两个API用于录音的实现:MediaRecorder 和AudioRecord. MediaRecorder:录制的音频文件是经过压缩后的,需要设置编码器.并且录制的音频文件可以用 ...
- App测试工具大全,收藏这篇就够了
随着移动互联网的高速发展,App 应用非常火,测试工程师也会接触到各种 app 应用.除了人工测试之外,也可以通过一些测试工具来提高我们的测试效率,以下对于我用过或听过的 app 测试工具做了一个统一 ...
- 【实战】记一次老项目的swagger整合
1.背景 这两天接到一个整合swagger的任务,本以为很简单,预计两小时内完成,没想到其中有太多的坑,整了两天才完成. 首先项目是一个比较老的项目,之前用的servlet,目前在重构为springm ...
- Java学习的第五十二天
1.例9.4对象数组的使用方法 public class Cjava { public static void main(String[]args) { Box b[] = {new Box(10,1 ...
- 2020 年TI 杯大学生电子设计竞赛E题总结(放大器非线性失真研究装置)
2020年TI杯大学生电子设计竞赛E题总结(放大器非线性失真研究装置) 摘要:E题的竞赛内容主要是参赛者自己搭建一个晶体管放大器,能够产生不失真.顶部失真.底部失真.双向失真和交越失真五种波形,并分别 ...