【问题标题】:Why is Azure not dispatching HTTP requests on one of my two instances?为什么 Azure 不在我的两个实例之一上分派 HTTP 请求?
【发布时间】:2012-09-06 10:12:28
【问题描述】:

我有一个包含两个实例的 Azure Web 角色。两个实例都“准备就绪” - 运行正常。

在我的桌面上,我有四个相同程序的实例同时运行,并通过 HTTP 请求访问 Web 角色 URL。然而,根据日志,所有请求都仅分派到实例 0。我需要将请求分派到两个实例以测试并发操作。

为什么没有将请求分派到第二个实例,我如何将它们分派到那里?

【问题讨论】:

    标签: concurrency azure load-balancing azure-web-roles


    【解决方案1】:

    这可能来自负载均衡器优化请求路由,因为所有请求都来自同一个 IP。虽然看起来很像,但 Azure 中的 LB 并不是真正的愚蠢循环。

    如果您只是没想到这一点,但服务器正在处理负载,那么您没问题。您甚至可以关闭第二个实例,直到您的指标显示服务器繁忙(为您省钱)。

    如果您需要能够从同一个 IP 进行负载平衡,那么我可能会考虑使用队列。尽管这对于 Web 请求来说是不寻常的(与某些后端处理相比)。

    【讨论】:

    • 这个答案很有用,但我找到了实际的解决方案 - 请参阅我的答案。
    【解决方案2】:

    看起来这种行为是由于 IIS“保持活动状态”(<system.webServer><httpProtocol allowKeepAlive="true">。因为“保持活动状态”一旦客户端由实例提供服务,它就会被该实例卡住。

    禁用“保持活动”会删除它,并且请求现在或多或少随机地到达所有实例。 MSDN 表示禁用“keep alive”可能会降低性能,但为了测试并发操作,它是可以的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-03
      • 2012-06-14
      • 2016-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多