【故障公告】发布 .NET Core 版博客站点引起大量 500 错误

  • 时间:
  • 浏览:0
  • 来源:5分时时彩官网_去哪玩5分时时彩_哪里可以玩5分时时彩

非常抱歉,今天上午的博客站点故障给我们都歌词 歌词 带来了很大的麻烦,请我们都歌词 歌词 谅解。这次故障是我们都歌词 歌词 发布 .NET Core 版博客站点引起的,嘴笨 我们都歌词 歌词 进行了充分的准备,但还是低估了高并发下的繁杂难题。

以下是故障背景与大致经过:

在你你是什么 炎炎夏日,我们都歌词 歌词 正热火朝天地忙着整个 .NET Core 迁移工程的收官 —— 发布 .NET Core 版博客站点与博客后台。我们都歌词 歌词 的有些系统都早已迁移至 .NET Core 并已在线上工作一番时日,只剩下最难啃的硬骨头 —— 博客系统,到你你是什么 月这根钢铁般坚硬的硬骨头也被啃得差过多了,它的发布上线将为我们都歌词 歌词 整个 .NET Core 迁移工程画上完美的句号,并顺带以此里程碑迎接 .NET Core 3.0 正式版的发布。

什么都有有,发布 .NET Core 版博客站点与博客后台成为我们都歌词 歌词 8月份最重要的工作。.NET Core 版博客站点7月份就将会完成开发,这段时间一边进行更进一步的内测,一边进行灰度发布,接入有些生产流量以发现我们都歌词 歌词 测试中未能发现的难题并进行修复,在上个周末接入更多生产流量进行测试与修复后,我们都歌词 歌词 将会很有信心,评估后认为已具备正式发布条件,除了我们都歌词 歌词 无法在测试环境中模拟的博客系统地处的繁杂高并发场景。

于是一边带着信心,一边带着对高并发难题的担心,我们都歌词 歌词 决定在今天一大早进行发布。

发布时的部署场景是什么都有有 的,博客系统基于 .NET Core 3.0 Preview 7 (EF Core 用的还是 3.0 Preview 5),7台阿里云 centos 服务器组建了 docker swarm 集群,6台4核8G服务器作为 worker 节点跑博客站点的应用容器,1台2核4G的服务器作为 manager 节点(不部署任何容器),每个 worker 节点都部署 1 个 nginx 与 .net core 博客应用容器,所有请求都由阿里云均衡转发到 nginx 容器,再由 nginx 容器转发给 .net core 应用容器,nginx 通过端口映射的最好的办法监听 worker 节点服务器的 60 端口。

什么都有有 的部署环境也是我们都歌词 歌词 经过长期验证的,唯一这麼 经过验证的什么都有有 博客系统这麼 高的并发。

顶着一个 高并发难题的风险(docker swarm 与 .net core ),我们都歌词 歌词 在今天早上 5:60 左右进行了发布。

开始英语 英语 访问量小,并发低,没经常经常出现难题,但到 8:60 左右经常经常出现难题了,打开什么都有有博客页面要1秒多(正常情形是几十毫秒),而在容器内用 curl 命令请求都在 到10毫秒。

$ docker exec -t $(docker ps -f name=blog_web -q) curl -H 'X-Forwarded-Proto:https' -w %{time_total} -o /dev/null -s localhost 
0.002876

怀疑是 nginx 的难题,准备重新创建一一个 docker 集群,我过多   nginx 直接用 kestrel 监听 60 端口。

只是同事指出,都在 nginx 的难题,是 docker swarm 端口映射在高并发下的性能难题,才能才能 将端口映射改为 host 网络模式才能解决你你是什么 难题。

9:60 左右,随着并发这麼 高,nginx 容器开始英语 英语 报 60 0 错误,开始英语 英语 以为是集群中的服务器负载缺陷,于是向 docker swarm 集群中加进服务器,但于事无补,60 0 错误过多。

经常经常出现 60 0 错误时,有时刷新一次就会好,有都要刷新好哪有几个,怀疑是集群中有些服务器不稳定,于是一台一台登录集群中的服务器进入容器用 curl 命令进行测试,除了1台服务器不稳定,有些服务器 curl 命令测试时响应时延都正常,将那台不太稳定的服务器下线,难题依旧,随着并发量继续增大,60 0 错误也继续增多。

进一步分析后,怀疑 60 0 错误是将会高并发下 nginx 容器与 .net core 应用容器之间的网络通信经常经常出现难题,于是 10:60 左右决定放弃这次发布,回退至跑在 Windows 上的 .net framework 版本博客站点,恢复了正常。