社区编辑申请
注册/登录
PassJava 小破站生产级事故,请放弃这个 CDN 吧!
系统 运维
我们生产环境前几个月爆过一次雷,客户反馈后台管理系统崩了,也是因为引用这个站点的 JS 脚本文件加载不出来的问题。

昨天读者群里反馈我的网站 ​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

关于 CDN

我个人是买了七牛云 CDN 服务和对象存储的,网站流量不大,所以资费不贵。首先把文件都丢到七牛云的对象存储里面,然后拿到文件对应的 CDN 地址,替换到自己的网站中。

注意:有些 js 脚本的代码中也引用了 cdn.jsdelivr.net 的文件,所以还需要改 js 脚本代码,比如我引用的 github 上的 autoload.js 文件里面就有。

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

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

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

网站恢复

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

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

电脑端访问:www.passjava.cn。

责任编辑:张燕妮 来源: 悟空聊架构
相关推荐

2022-05-27 10:00:06

C++游戏引擎

2022-06-16 07:32:38

VSCodePython插件

2022-06-07 09:59:21

网络安全安全漏洞

2022-06-28 09:34:24

可视化Python代码

2022-06-16 15:42:16

攻击面管理ASM

2022-06-27 17:46:53

PythonFlask

2022-06-28 08:40:16

LokiPromtail日志报警

2022-06-27 23:44:37

云原生云存储云计算

2022-06-13 18:01:51

新华三

2022-04-23 17:49:05

区块链元宇宙MetaCon

2022-06-25 21:22:30

编程Rust代码

2022-06-09 10:12:01

网络安全人工智能威胁监测

2022-04-15 14:31:02

鸿蒙操作系统

2022-04-27 09:30:01

Python爬虫人工智能

2022-06-09 15:07:49

2022-06-21 21:47:13

数据系统

2022-06-01 10:09:39

Linux网络延迟

2022-06-06 15:18:41

开源GiteaDrone

2022-06-23 13:13:36

GitHub开发技巧

2022-06-17 09:47:04

Linux命令

同话题下的热门内容

微软 Windows 11 Build 22000.778 (KB5014668) 发布:新增搜索亮点,带来大量修复内容用这些开源工具在 Linux 上编辑 PDF 文件微软 Windows 10 21H2 Build 19044.1806 预览版发布:解决 Wi-Fi 热点问题Linux 网络性能的 15 个优化建议Docker Compose:搭建开发环境的好方式Windows 11年度更新22H2要来了!教你查能不能升级减少开发者工作量,微软向 Windows 10 推送 WebView2为什么用C语言编写操作系统?

编辑推荐

你应该知道的八款国产操作系统为什么你可能想要略过Ubuntu 17.04?HarmonyOS 2.0鸿蒙第二期开发者Beta公测申请指南让后端开发情何以堪?前端程序猿薪资大曝光谷歌“断供”华为!中国真写不出操作系统?
我收藏的内容
点赞
收藏

51CTO技术栈公众号