我有一个在 Digitalocean(ubuntu 18 / lamp)上托管的 prestashop 网站,从昨天开始,即使我的网站每天的访问量不超过 300 次,服务器 CPU 和内存也始终处于 100%。
我一直在追踪问题可能出在哪里,在 apache 日志上运行 goaccess 后,我发现就在今天,服务器被来自亚洲的 26 万次访问(全部来自 Android 设备),并且这些访问不是针对某些特定的 url,而是针对我网站上的数千个实际页面,而且这些访问似乎不是来自已知的爬虫(我也检查了 netstat,看到大量的Foreign Address
ips……)
我不太了解服务器,您能帮助我了解可能发生的情况吗?
谢谢!
答案1
从您的角度来看,这些点击实际上是一种拒绝服务。
您可以做很多事情。如果您不服务亚洲市场,那么您可以根据 IP 块阻止流量(当我看到来自某些网络的大量未经请求的探测时,我自己就成功地做到了这一点,我阻止了整个 IP 范围)。
在 Linux 中可以使用 iptables(或同等程序)轻松进行阻止。
如果您访问 IANA 站点,您可以访问已分配的 IP 地址块列表,如果您可以找出想要阻止的 IP 地址块的模式,那么就阻止它们。
因此,例如,如果您看到一个块 xy0.0/16(这是一个大块)分配给一个外部注册表,并且大量给您带来问题的流量来自那里,您可以像这样使用 iptables 进行阻止:
iptables -I INPUT -s x.y.0.0/16 -j DROP
让您的网站更具弹性也很有帮助。通常,使用 LAMP 类型堆栈时,提供页面、连接数据库、处理脚本、可能调用外部 Web 服务等会产生大量开销。即使是功能相当强大的服务器也很容易超载。