保持F5(刷新button)按下导致高Apache服务器负载

我们正在我们的服务器上运行一个论坛软件(Woltlab Burning Board),发现如果至less有两个用户非常快速地重新加载网站(保持F5button被按下),服务器负载会上升到> 15,导致服务器真的很慢响应。

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

服务器有以下硬件应该是足够的:英特尔氙4×3,3GHz的16GB内存

截图F5按下时的apache负载屏幕截图: http : //imgur.com/hc3RpbF

我们怎么能阻止这么高的服务器负载? 提前致谢

研究使用Varnish或nginx来服务器和caching静态内容。 他们可以作为Apache的反向代理。 这在我用过的所有设置中都有奇效。

更大的问题可能是该软件编程不佳。

用户使用的技术实质上是分布式拒绝服务(DDoS)攻击的基本理论(即淹没无法应付的stream量的服务器)。

我的build议是教育你的用户以不同的方式使用应用程序,或与他们联系,以确定他们为什么以这种方式使用应用程序并解决这个问题。

如果没有其他的工作,阻止用户(也许通过fail2ban )是最后的手段。 用任何手段淹没服务器的stream量都是不应容忍的,而使事情变得更快只会让问题用户淹没更多stream量的服务器。

限制每个时隙接受的请求数量的一个非常好的方法是nginx limit_req , 这里描述得非常好。 你真的应该让自己的某种防火墙,并运行nginx实例。 这样,你也可以应用iptablesiproute2规则来限制其他types的stream量(因为nginx只是关于http)。

我使用Ubuntu的大部分东西 – 它与ufw是围绕iptables一个不错的包装。 速率限制,如此处所述完成。 我喜欢这个包装,因为iptablesiproute2都可以处理恕我直言,有点痛苦。