一直按住 F5(刷新按钮)会导致 Apache 服务器负载过高

一直按住 F5(刷新按钮)会导致 Apache 服务器负载过高

我们在服务器上运行一个论坛软件(Woltlab Burning Board),发现如果至少有两个用户不断快速重新加载网站(按住 F5 按钮),服务器负载将上升到 > 15,导致服务器响应非常慢。

我们还尝试了全新安装的论坛,没有安装任何插件,结果相同。负载似乎来自 apache,而不是数据库 (MySQL) 或其他任何东西。

该服务器具有以下硬件,应该足够了:Intel Xenon 4x3,3GHz 16GB RAM

按下 F5 键时 apache 加载的屏幕截图: https://i.stack.imgur.com/RNvEB.jpg

我们如何才能避免服务器负载过高?提前致谢

答案1

考虑使用 Varnish 或 nginx 来服务器和缓存静态内容。它们可以充当 Apache 的反向代理。这在我使用过的所有设置中都发挥了奇效。

更大的问题可能是该软件的编程很差。

答案2

您的用户所使用的技术本质上是分布式拒绝服务 (DDoS) 攻击背后的基本理论(即,向服务器注入过多的流量以致服务器无法应对)。

我的建议是教育您的用户以不同的方式使用该应用程序,或者与他们联系以找出他们以这种方式使用该应用程序是否有正当理由并解决该原因。

如果没有其他办法,可以屏蔽用户(可能通过失败2ban)是最后手段。任何方式的服务器流量泛滥都是不应该被容忍的,而提高速度只会让问题用户向服务器注入更多的流量。

答案3

限制每个时间段接受的请求数量的一个非常好的方法是使用 nginxlimit_req正如描述的那样这里。你真的应该给自己买一个防火墙,并且运行 nginx 实例。这样,您还可以应用iptables规则iproute2来限制其他类型的流量(因为 nginx 只与 http 有关)。

我大多数时候都使用 Ubuntu - 它自带ufw一个很好的 iptables 包装。速率限制等操作按照描述进行这里。我喜欢包装部分,因为在我看来iptablesiproute2处理起来可能有点痛苦。

相关内容