摘要:
大家好,想了很久,终于做了这个决定,写了这封求助信。带着愧疚,努力建设园子这么多年,依然如此糟糕;带着希望,有一件事想恳请大家帮助,这件事如果完成了,将帮助园子迈上新台阶。最近园子发生了很多事情,让我们小小的团队应接不暇,顾此失彼,一团乱,但这些事情都在将园子推向一个更好的发展阶段,但需要我们把握机会,解决好当前面临的一堆问题。 阅读全文
摘要:
我们的博客系统是部署在用阿里云服务器自己搭建的 Kubernetes 集群上,故障在 k8s 部署更新 pod 的过程中就出现了,昨天发布时,我们特地观察一下,在这1集中分享一下。正常发布情况下,整个部署操作通常在5-8分钟左右完成(这与livenessProbe和readinessProbe的配置有关),下面是部署期间的控制台输出 阅读全文
摘要:
今天晚上我们发布了最新版博客系统的 .NET Core 3.1 版,之前回退的都是以前的 .NET Core 3.1 版,最新版是基于 .NET 5.0,今天进行一番降级修改才有了 .NET Core 3.1 版。出这个版本有2个打算,一是如果问题暂时解决不了,先用 .NET Core 3.1 版支撑一段时间,二是验证一下是不是这段时间我们代码的变更埋下的坑 阅读全文
摘要:
考虑到案情的复杂性与戏剧性,今天我们进行了第2手准备,从基于 .NET 5.0 的最新版博客系统修改出 .NET Core 3.1 版。之前回退的 .NET Core 3.1 版是10月14日生成的,中间相差了30多个发布,降级太多,不能长时间在线上使用,有了最新的 .NET Core 3.1 版,一是做好长期破案准备,二是确认一下是否是中间的代码修改造成的问题,今天晚上8点左右会发布这个 .NET Core 3.1 版。 阅读全文
摘要:
今天晚上基于第2集中改进版的 EnyimMemcachedCore 进行了发布,发布过程中故障重现,最大的嫌犯 EnyimMemcachedCore 被证明无罪,暂时委屈 .NET 5.0 继续背锅。发布操作启动后,Kubernetes 集群在 20:05 左右开始更新 pod,虽然 pod 更新完成了,但从日志中看还是有 pod 在重启,可能是因为健康检查失败而重启 阅读全文
摘要:
在这一集中,主角是 memcached 客户端 EnyimMemcachedCore,它是到目前为止我们发现的最大嫌疑对象,它是我们从 .NET Framework 版的 EnyimMemcached 迁移到 .NET Core 的,修修补补、补补修修了好几年,最大的改动是实现异步化(async/await),在 review EnyimMemcachedCore 源代码的过程中,在 AcquireAsync() 方法中发现1行代码 阅读全文
摘要:
今天我们分析了博客站点的2次故障(故障一、故障二),发现一个巧合的地方,.NET 5.0 正式版的 docker 镜像是在11月10日提前发布上线的。而在11月10日下午4点左右,由于 CI 服务器磁盘空间用完,我们进行了磁盘清理,删除了 CI 服务器上的所有镜像,清理之前 CI 服务器上 .NET 5.0 镜像版本对应的是 .NET 5.0 RC 2,所以11月10日晚上发布博客站点时,CI 服务器重新下载了镜像 阅读全文
摘要:
自从博客系统升级 .NET 5.0 之后遇到的诡异故障(一、二、三、四),今天它又出现了,就在前天刚刚故障之后, 就在昨天 .NET 5.0 正式版刚刚发布之后,出现了。今天晚上我们在 19:30 左右进行了一次发布,发布后特地进行了观察,没有出现故障,但后来在 20:30 左右发现了故障(巧合的是与上次故障是差不多的时间点) 阅读全文
摘要:
俗话说“三百六十行,行行出状元”,自从有了电脑之后,三百六十行又多了一行 —— 命令行。GUI 的诞生开创了繁荣的 PC “窗口”(windows)时代,互联网的诞生给 GUI 家族增添新成员 Web UI,移动互相网的诞生又帮 GUI 家族生下了二胎 Mobile UI,但用情专一的程序员念念不忘的依然是命令行,于是这一行出了个网红状元 —— Linux 阅读全文
摘要:
在 .NET 5.0 背锅 、 Memcached 的惹祸 、缓存雪崩之后,我们没有找到问题的真正原因,我们知道没有找到根源的故障总是会再次光临的,不是在这周就是在下周,也许就在双11前后。就在今天双11的前一天晚上,在我们 20:30 进行常规发布的时候,它来了。。。 阅读全文