动态阻止过多的 HTTP 带宽使用?

动态阻止过多的 HTTP 带宽使用?

我们有点惊讶地看到我们的仙人掌6 月 4 日网络流量图表:

我们跑日志解析器在我们的 IIS 日志中,结果发现这是 Yahoo 和 Google 机器人对我们进行索引的完美风暴。在这 3 小时内,我们看到来自 3 个不同 Google IP 的 287k 次点击,加上来自 Yahoo 的 104k 次点击。哎哟?

虽然我们不想屏蔽 Google 或 Yahoo,但这种情况以前也发生过。我们可以访问思科 PIX 515E,我们正在考虑把它放在前面,这样我们就可以动态地处理带宽违规者,而无需直接接触我们的网络服务器。

但这是最好的解决办法吗?我想知道是否有任何软件或硬件可以帮助我们识别和阻止过度带宽使用,最好是实时的?也许我们可以在网络服务器前面放一些硬件或开源软件?

我们主要经营 Windows 业务,但也有一些 Linux 技能;如果 PIX 515E 不够用,我们也愿意购买硬件。您有什么建议?

答案1

如果您的 PIX 运行的是 7.2 或更高版本的操作系统,或者可以升级到该版本,那么您可以在防火墙级别实施 QOS 策略。特别是,这允许您调整流量,并应该允许您限制机器人使用的带宽。思科对此有一个很好的指导这里

答案2

我不太清楚雅虎的情况,但你可以配置 Google 机器人索引你网站的频率。看看Google 网站管理员。我不确定雅虎是否有类似的东西。无论如何,这都会将您的流量减少高达 50%。

另外,一些 Web 服务器可以限制每个连接的流量,因此您可以尝试一下。我个人会远离硬件解决方案,因为它很可能花费更多。

答案3

减少抓取负载 - 此方法仅适用于 Microsoft 和 Yahoo。对于 Google,您需要通过其网站管理员工具 (http://www.google.com/webmasters/)。

执行此操作时要非常小心,因为如果您过度减慢爬行速度,机器人将无法访问您的整个网站,并且您可能会丢失索引中的页面。

以下是一些示例(这些示例位于您的robots.txt文件中):

# Yahoo's Slurp Robot - Please wait 7 seconds in between visits

User-agent: slurp
Crawl-delay: 7

# MSN Robot - Please wait 5 seconds in between visits

User-agent: msnbot
Crawl-delay: 5

稍微离题,但您也可以指定站点地图或站点地图索引文件。

如果您希望向搜索引擎提供最佳 URL 的完整列表,您还可以提供一个或多个 Sitemap 自动发现指令。请注意,user-agent 不适用于此指令,因此您不能使用此指令为部分搜索引擎(而非所有搜索引擎)指定站点地图。

# Please read my sitemap and index everything!

Sitemap: http://yourdomain.com/sitemap.axd

答案4

我推荐 Microsoft ISA Server 2006。具体来说,对于这个要求,它将默认限制为每个 IP/分钟 600 个 HTTP 请求,并且您可以为 Jon Skeet 应用例外(抱歉,我意识到这个“笑话”已经开了!)。

您还可以享受应用程序级过滤的额外好处,包括跨多个 Web 服务器进行负载平衡的能力(而不是在这些服务器上使用 NLB)、VPN 终止等。有许多可用的商业扩展,如果您有勇气的话,您甚至可以编写自己的 ISAPI 过滤器。

它显然不是开源的,但对 Windows 商店有好处,并且可以在商品硬件上运行。

相关内容