仅通过在 IE8 中打开 10 多个选项卡就可以连接到服务器的数百个连接?

Dar*_*gur 6 ip-blocking

我们有运行 vBulletin 的私人论坛,我们收到了一位客户的投诉,他在打开很多标签时无法访问这些论坛。上次他打电话,确定是我们的主机自动屏蔽了他的ip地址。在与主机打开支持票后,他们解除了它的阻止,他们说它已被自动阻止过多连接(我假设并发连接)。他们说有 546 个连接。

客户正在运行 IE8 并声称在大约 8-12 个选项卡后,其余的“超时” - 每次。而且,当然,没有其他网站有这个问题。

更新:事实证明 Chrome(或 Firefox,但我认为是 Chrome)有同样的问题。但是 Opera 似乎很好(我认为是因为它的积极缓存)。

由于无法直接访问两端的计算机,我希望如何解决此问题?

小智 5

听起来您的主机有某种反 DOS 配置设置,您的客户通过同时打开许多选项卡来触发它。如果访问您的系统的单个选项卡同时打开多个 HTTP 会话以并行下载文件,我并不感到惊讶 - 因此,如果您的客户同时打开 10 个选项卡,正如较新的浏览器提供的那样,那么听到您的客户正在向您的服务器打开 10 个 HTTP 会话。

IE 8 最多可打开 6 个对同一主机名的并发会话。

如果您将多个主机名设置为指向同一个 IP 的 CNAME(有些人喜欢设置,比如“images.example.com”、“css.example.com”和“forums.example.com”,都指向到同一实际主机),您可能会使 IE 难以看到它们都是同一台机器,从而使问题变得更糟 -显然比较是由主机 NAME 完成的,而不是 IP。

您的客户可能可以通过使用不同的浏览器、使用本地缓存、修改其 IE 安装以使用更少的并发会话或不一次加载这么多选项卡来降低发生这种情况的可能性。

如果您的客户使用可预测的 IP 地址,您可以要求您的主机增加允许连接到您的网络服务器的数量,缩短检测过度使用的时间窗口,或者将您的客户列入白名单。

如果您的主机的防火墙根据同时打开的连接数排除在外,您可以通过确保优化配置来改善这种情况 - 例如,最小化不必要的查询,使用清漆或其他类型的加速器查看缓存,转动关于压缩,确保您允许 HTTP 持久连接。

如果您无法控制进行连接的系统或限制连接的系统,这听起来像是一个难以解决的问题。


小智 1

gbroiles 已经有了一个很好的答案;我添加一个答案,因为这个答案太长,无法放入评论中。

所有浏览器都会打开多个连接,以便更快地下载网站。必须下载 HTML 中链接的每个图像、CSS 文件、Javascript 文件等,并且这是并行完成的以加快速度。您可以在 Browserscope.org 的“网络”选项卡中查看每个浏览器打开的连接数

还有2点需要注意:

  • 趋势是浏览器不再为每个主机打开更多连接。
  • 如果连接降级为 HTTP 1.0(通过中间代理进行处理),则大多数浏览器将打开其他连接。(我能很快找到的最好的链接就在这里;Steve Souders 在他的一本书中写了更多关于这方面的内容。)

实际上,如果该用户向单个小型 VPS 服务器打开 10 个以上选项卡,那么他就是在囤积资源。我认为禁止这样做是完全明智的。用户可能会脾气暴躁,但他只有一双眼睛,所以他真的不能声称可以同时与所有 10 多个页面进行交互。如果服务器是一台大而强、负载低的机器,那么当然是另一回事了。

您可以做的一些事情是:

  • 查看您的HTTP Keepalive 设置,然后将其关闭,或将其设置为较低的超时值(fx 5 秒)。这可能还不够,但至少您不会有太多挥之不去的开放连接。
  • 在内容交付网络 (CDN)上托管静态内容(徽标、CSS、JS、用于布局的图像)。小型 CDN 帐户现在很便宜,并且您可以将静态内容的所有 HTTP 请求定向到您自己的服务器。
  • 验证您的服务器是否正在为静态内容发送正确的缓存标头。至少,您不希望用户一遍又一遍地下载相同的徽标、CSS 等。请参阅这个出色的缓存教程,并在webpagetest.org或REDbot上测试您的标头
  • 准确找出哪个系统将您的客户列入黑名单。如果它是来自您的 ISP 的反 DDoS 服务,那么也许您可以要求排除在反 DDoS 保护之外(但当然首先要考虑这一点)。如果它是主机上的软件防火墙,那么您可以要求提高限制。

简而言之,您应该能够与托管合作伙伴一起解决此问题 - 但首先要考虑潜在的后果。