上周我问了这个问题,并遵循了debuggingbuild议,现在有了更多的信息。
我有一个奇怪的问题 – 在一个高stream量的网站上(每月有数百万的访问者),每天我们得到大约20个左右的情况,一个主机开始不断请求同一页面,每秒多次 – 从几分钟到一整天的任何时间长度。
这次攻击显然不是恶意的,因为我已经回溯了IP地址,并将其与我采访过的一些注册用户进行了匹配。 他们说,当这种情况发生时,他们的电脑变慢了,但是否则可以使用。 这不会发生在每一页的负载,而是零星的。
日志命中有以下特点:
我们终于明白如何处理这件事。 一个简单的DoSfilter是不合适的 – 我们拥有这个filter,触发它的阈值远高于单个页面请求(没有相关的图像,CSS等)。 我们还安装了mod_evasive,但是这并不能捕捉到这些,因为我们有一个多服务器系统,并且是以每个孩子为基础运行的。
该堆栈是LAMP,Redhat安装,PHP 5.2,Apache 2.2.3,NGINX框在多个Web服务器和数据库后端作为软件负载均衡器运行。
在没有好的想法的情况下,我们采用在memcached中编写我们自己的虚拟filter,在memcached IFF中存储IP + URI的密钥,用户是Firefox 3.x,并且引用者是空白的,并且递增每个页面请求。 一旦在一段时间内超过一定的门槛,我们还有403个要求。
但是,我不认为这是networking堆栈中处理这个问题的适当的地方。 希望有人看到这些,可以帮助我们find模式。
感谢您的贡献!
- 用户经常忘记发生了什么 – 他们的页面没有重新加载,所以发生在他们的背景下,我相信Firefox只是把信息扔掉
听起来几乎就像一个后台进程…一个已经走入歧途的扩展?
- 只要访问者在该特定页面上,这种情况就会持续下去,而下一页加载通常是正常的
加强扩展中的错误的情况。 在“正常”的处理过程中,某些东西可怕地发生了故障,但是当你重新加载的时候,它会重新启动任何挂起的处理,并且成功,而不是挂在循环中。
或者像jholloway7提到的那样,保持活力的东西意味着其他会议。 (评论+1指出一个例子)