一次很意外的网站故障经历。

程序员鱼皮

共 2812字,需浏览 6分钟

 ·

2023-08-08 03:01

一次很意外的网站故障经历

大家好,我是鱼皮。这个周末不太愉快,因为今天刚起床迷迷糊糊地,我就收到了用户反馈说 “鱼皮,你的网站又打不开了!一直在加载!”

我直接精神了好吧!

首先我们来看下故障的具体表现。

故障表现

正常情况下,我的网站在 1 秒内就加载完成了:

但故障发生时,网站加载了近 30 秒才只加载了一个 loading 转圈圈:

但是等了一分多钟,网站还是能加载完成的。所以看上去就像是网速不好、或者服务器带宽不足。

然后我去看了下服务器的监控面板,果然当时服务器的带宽基本上被打满了!

如下图,左侧是正常的网络 IO 流量曲线,右侧是网站故障时的流量曲线,明显高了一大截:

好吧,肯定又是哪个小可爱在攻击网站,模拟真实用户在刷我的流量吧。已经习以为常了,哪天没攻击我才觉得奇怪。。

为什么有攻击网站的访问就变慢了呢?

其实很好理解,如果把服务器网络传输比作交通运输,路上如果都是肇事车辆,那么正常的车辆就难以通行了,只能一直堵着。而且恶性循环,越来越堵。

结果看了下日志,发现服务器今天并没有被攻击的记录,无论是 DDOS 还是 CC 攻击都没有。

看来攻击者又整新活儿了啊,那难道是利用了某些漏洞?

算了,不瞎猜了,接下来我们看看攻击者是攻击了哪个程序,或者恶意频繁访问了哪个网站。

我们进入服务器的终端控制台,输入 nethogs 命令,查看当前服务器上每个进程使用的网络带宽情况:

以下截图是事后截的,数值和当时不同

很容易就找出了是哪个进程占用了大量的网络带宽(上图第 1 个),进程号为 2500。

然后使用 ps -ef | grep <pid> 命令查看 2500 进程的信息,定位到具体是哪个项目,如下图:

咦,kkdaxue?这是啥项目来着?

哦,想起来了,是我之前给 B 站几百万粉的知名校园 UP 主取景框看世界(以下简称框框)做的各专业建议网站 框框大学,不过已经很久没有刻意维护了,网站也一直稳定运行。

为什么攻击者会盯上这么一个免费的公益网站呢?而且为什么这次攻击没有被拦截呢?

我百思不得其解。。。

正当我犯愁时,找我做网站的框框微信给我发了条消息,瞬间解决了我的疑惑。如下图:

我又去看了下这个网站的监控统计,果然,这个网站今天短短几小时的访问量竟然比上周全天还多了 16 倍!

我滴妈呀,万万没想到,这次竟然不是攻击!而是真的有那么多用户同时访问网站!把我的大水管都撑爆了!

朋友们谁懂啊,被黑客攻击了这么多次的我,第一次体会到了被真实用户 “攻击” 的感觉,真是哭笑不得。

处理方式

虽然用户都是真实用户,但由于这个服务器的总带宽是有限的,如果继续让这个网站的流量消耗资源,还会影响服务器上其他项目的访问,所以我只能选择先把这个网站停掉了(反正大家也挤不进去)。

于是,很多小伙伴又看到了熟悉的 “笑脸”:

那么如何解决呢?

带宽不够,那就加呗!增加服务器的带宽是我直接能想到的最简单粗暴的方式。

于是花了点小钱给服务器加了带宽,相当于水管变大了,应该能容纳更多用户的同时访问。

然后我就重新开启了这个网站。但没想到还是顶不住,网站又卡爆了、加载不出来。。。

那就只能再想其他解决方案了,加带宽治标不治本;而且又不能因为用户多就限流吧,理想情况下当然希望所有人都能同时访问。

所以我去找框框确认下 “大概会有多少人同时访问网站”,便于我评估方案:

结果我发现量级比我想的还要大。。。这个网站竟然登上了抖音上海同城榜的 第一 !!!

看来没办法了,只能用那个了。。。那个危险但是牛皮的技术。。。

没错,就是 CDN!

因为网站主要的流量和带宽资源占用在于前端网页文件,所以 CDN 会比什么水平扩容的容器技术更直接有效。

所谓 CDN(内容分发网络),是指把用户要访问的资源(比如网站文件)提前加载到离用户较近的节点服务器上,这样用户需要访问网站时,不用只从我那一台服务器去取,而是可以从不同的、较近的服务器节点访问,不仅分散了原始服务器的压力、也能提高用户访问速度。

CDN 原理图

使用 CDN 后,网站就能够正常访问了,理论上 人再多也不怕!

这么牛的技术,为啥之前我不用呢?答案很简单,CDN 要花 money,流量越大,花的越多。。。

所以不到万不得已,我现在很不想用 CDN。毕竟本来框框大学就是免费的,网站稳定的情况下,能省则省。



好吧,整个事情就是这样。最后也是希望我们开发的框框大学网站能够给学弟妹们带来帮助。虽然这次我是幕后的技术支持,但是仍然为框框的想法和工作点赞,并且为我们的作品感到骄傲,希望有更多前辈们可以在网站上留下您宝贵的经验~

框框大学:https://www.kkdaxue.com/

一张很有趣的截图哈哈:

往期推荐

看完这个,我直接把 SQL 刷通了!

实习天天crud,很迷茫...

我入伙了!

千万千万不要在方法上打断点!太坑了!

手写 OJ 系统,真的很难么?

被字节拷打了!基础还是太重要了...

浏览 17587
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报