网站会自行从拒绝服务攻击中恢复吗?
我现在遇到了一种比较特殊的情况。简单来说,我是一个有大约2000名成员的志愿者组织的一部分。我们现在的网站是由一位已经不再参与组织的成员建立和维护的(他辞职了)。不幸的是,他是唯一一个有服务器访问权限的人,离开后也没有配合把权限交给其他人。因此,我和一个小团队正在从头开始为自己创建一个新网站。原网站上的数据对我们新网站来说非常重要,所以在没有直接访问数据库的情况下,我们只能通过屏幕抓取需要的信息。
这就引出了我现在的问题。我用的屏幕抓取脚本运行得非常慢,所以我脑子一热(其实并不聪明)决定让它并行运行。我以为是我的网络慢造成的瓶颈,于是愚蠢地决定同时运行250个线程。结果尝试之后,网站服务器神秘地宕机了,至今还没恢复(已经过去大约30分钟了)。
我并不是黑客或安全专家,但我很确定我可能不小心造成了对服务器的拒绝服务攻击。于是我想问,如果网站的拥有者不采取任何措施来帮助我们,服务器会自己恢复吗?(如果这有关系,它是在Linode上用Django托管的)。网站通常是如何从拒绝服务攻击中恢复的?我是否可能误诊了情况,是否还有其他解释?或者说这个网站就这样永远消失了?
补充说明:所有250个请求都是简单的http请求,指向Django管理面板中的页面,如果这有什么影响的话。
2 个回答
如果你还没有停止你的屏幕抓取软件,建议你赶紧停下来。
系统出现问题的原因可能有很多,比如数据库、服务器、网络,或者这些都出了问题。通常情况下,当负载减轻时,系统可能会自己恢复过来。
如果你的应用程序无法同时处理250个连接,那你需要查查原因。一般来说,问题可能出在数据库上,比如没有建立索引或者查询没有优化。
Linode 可能会对在一定时间内使用的带宽有限制。你最好联系他们(或者负责这方面的人)了解情况。
很可能系统并没有彻底崩溃,除非那个人真的生气了,或者托管服务商因为流量过大而关闭了它。不过,有几个方面需要考虑。250个连接其实并不算太大的负载,即使是共享主机,除非你在疯狂地向服务器发送请求。
根据使用的技术,可能发生了几种情况。
- 你可能达到了网络服务器的限制,比如排队等候的限制,这可能需要重启应用程序。这种重启可能会在一段时间后自动进行,或者需要托管服务商的干预。
- 你可能让应用程序超负荷运转,使用了过多的内存,导致它被强制关闭。一些托管服务商会这样做,但通常只会在短时间内关闭,并允许应用程序重新启动。(等个一个小时左右吧)
- 你可能超过了每月的带宽限制,在这种情况下,可能会一直无法使用,直到下一个账单周期……
如果不知道托管服务商或环境,这些都只是猜测。
不过,我强烈建议你关闭你的抓取程序!