【问题标题】:Possible to enable Keep-alive with a load balancer?可以使用负载均衡器启用 Keep-alive 吗?
【发布时间】:2012-01-03 05:14:51
【问题描述】:

我正在尝试使用 Google 的 Page Speed API 优化我的 Web 应用程序,该 API 强调了我的 HTTP 响应标头中缺少“保持活动”是一个主要的页面速度弱点。

在与我的后端开发人员和系统管理员交谈时,他们告诉我在网站上使用 Keep-alive 是不可能的,因为我们使用了负载平衡器。

我想知道,这是准确的吗?是否有支持 Keep-alive 的负载均衡器?

如果无法与负载平衡器一起使用,Page Speed API 会抱怨 Keep-alive,这对我来说似乎很奇怪,因为我想相当多的应用程序和大型网站都使用负载平衡器。

谢谢!

【问题讨论】:

  • 告诉他们切换到 HAProxy 并启用 HTTP 持久连接。 :)
  • 这是否真的会产生性能差异或只是在响应标头中加入 keep-alive?
  • 如果您不确切知道什么是 HTTP 持久连接,则不应要求您的后端开发人员和系统管理员来实现它。

标签: load-balancing keep-alive


【解决方案1】:

我不知道你有什么类型的负载平衡器......但我认为它不会阻止使用保持活动连接。

负载平衡器将处理与其中一台后端服务器的每个传入连接。现在对于每个对象,浏览器需要建立一个新连接来获取该对象(例如所有小图像)。建立和关闭 TCP 连接需要一些时间。这就是为什么 Google Page Speed 建议开启 keep-alive。另一种选择是将所有小图像放入一个大图像中,并使用 css sprite 在页面的不同位置显示其中的一部分。

但回到负载平衡器。如果您有网络负载平衡器,它应该可以毫无问题地工作 - 它只会将传入的 TCP 连接重定向到后端服务器之一。如果您有 HTTP 负载均衡器,它将接受连接,读取请求,将请求发送到后端服务器,等待它回答并将回答发送回浏览器。如果启用 keep-alive,负载均衡器应通过同一连接转发它收到的下一个请求。

对于动态页面,您不需要保持活动状态。 Keep-alive 主要用于静态内容(js、图像、css),因为每个 html 页面通常有 10 多个静态对象。因此,我建议继续通过该负载平衡器提供 html,并通过不同的主机名 (static.example.com) 提供静态内容。

【讨论】:

    猜你喜欢
    • 2016-01-09
    • 2020-09-02
    • 2021-09-10
    • 2021-12-07
    • 2016-12-05
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 2015-10-14
    相关资源
    最近更新 更多