写点什么

InfoQ 极客传媒 15 周年庆征文|PassJava 网站生产级事故复盘

作者:悟空聊架构
  • 2022 年 6 月 08 日
  • 本文字数:1402 字

    阅读完需:约 5 分钟

你好,我是悟空。


今天读者群里反馈我的网站 passjava.cn 崩了,上去一看果然崩了。



原因就是我的网站引用了这个站点 cdn.jsdelivr.net 的静态文件,而这个站点崩了!


它是一个国际的免费的 CDN 站点,很多公开的 npm 包、Github 仓库,都可以使用它来作为静态资源服务器,而且很多国内和国外的知名网站都用了。


有些同学可能对 CDN 不了解,这里做个说明:


内容分发网络(Content Delivery Network,CDN)通过将站点内容发布至遍布全球的海量加速节点,使其用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。


这个 CDN 是免费的、速度又快,白用它谁说不香呢?是真的吗?


我们生产环境前几个月爆过一次雷,客户反馈后台管理系统崩了,也是因为引用这个站点的 JS 脚本文件加载不出来的问题。


恰巧前天晚上我其实也发现了这个站点访问不了,但过了一个小时后就恢复访问了。报错截图如下所示:



但昨天下午读者又反馈长时间不能访问,那这个就是生产级 T0 的事故了。遇到这种情况怎么办?

关于修复方案

  • 先安抚读者情绪。

  • 将问题原因用能听懂的话描述出来。

  • 提供一个修复方案。

  • 提供修复完成的时间。


下班后,我就赶紧开始修复了,其实修复方案也挺简单,就是把所有引用这个 CDN 的静态文件替换成一个可以访问的链接就可以了。具体修复方案如下:


  • 先将 cdn.jsdelivr.net 的静态文件一个一个全部下载下来(浏览器直接输入这个文件链接,然后保存下来)。我的网站上引用了 javascript 脚本、css 文件、json 文件。

  • 然后将这些下载的静态文件全部都放到自己的服务器或者 CDN 上。

  • 替换自己的网站里面的链接。


这里有个问题:这个网站 cdn.jsdelivr.net 已经崩了,如何能下载上面的静态文件?


方案一:等网站恢复后再下载,不断重试,有几率一直访问不了。


方案二:我已经把我用到的静态文件上传到 GitHub 了,如果你用的也是 docsify 框架搭建的网站,可以直接访问这个 Github 下载。


https://github.com/Jackson0714/static-files/tree/main

关于 CDN

我个人是买了七牛云 CDN 服务和对象存储的,网站流量不大,所以资费不贵。首先把文件都丢到七牛云的对象存储里面,然后拿到文件对应的 CDN 地址,替换到自己的网站中。注意:有些 js 脚本的代码中也引用了 cdn.jsdelivr.net 的文件,所以还需要改 js 脚本代码,比如我引用的 github 上的 autoload.js 文件里面就有。


如果没有自己购买 CDN 服务,直接上传到大厂商的对象存储也行,比如七牛云、阿里、腾讯的对象存储,这几家都提供了免费的空间。上传到自己的公开的对象存储上之后,就可以拿到静态文件的公有链接了。


如下图所示,我上传到了七牛云上面的对象存储上了,同时七牛云会提供一个 CDN 的链接给我。



另外需要注意的是如果覆盖上传了文件到自己的对象存储后,则需要刷新下 CDN,不然网站加载的文件还是之前上传的,导致网站上看不到改动的效果。如下图所示的刷新界面,填入刷新的目录,点击刷新就可以了,不过有刷新限制,不要频繁刷新。


网站恢复

好了,经过 2 个小时的紧急修复:下载文件、修改 js 脚本、上传文件、刷新 CDN、替换链接等一系列操作,我的小破站终于恢复正常了。赶紧在群里给读者反馈网站恢复了。但问题是读者们把我的这个月的绩效扣没了。。。



最后再说一句,我的小破站买的最低配的服务器,别给我的网站压测了😂,在此蟹蟹了🙏。


电脑端访问:www.passjava.cn



用户头像

用故事、大白话讲解Java、分布式、架构设计 2018.05.06 加入

公众号:「悟空聊架构」 【个人博客】www.passjava.cn 【开源项目】基于 SpringCloud 的一套面试刷题系统 【Github】https://github.com/Jackson0714/PassJava-Platform

评论 (1 条评论)

发布
用户头像
遇到过网站崩溃的吗?欢迎留言说出你的故事。
刚刚
回复
没有更多了
InfoQ 极客传媒 15 周年庆征文|PassJava网站生产级事故复盘_运维_悟空聊架构_InfoQ写作社区