多个网站如何在应用服务计划的多个实例之间进行负载平衡?

How are multiple websites load balanced across multiple instances on App Service Plans?

我们在 单一应用服务计划 中托管 3 个独立的网站。此计划配置为 运行 3 个小型实例 (S1)。我理解这意味着 3 个独立的服务器,每个服务器有 1 个 CPU.

如果三个网站中只有一个 的流量非常高来自单一来源(另一个离线服务器)负载如何平衡在 3 个实例中?

是所有请求都进入循环法还是所有请求都尝试进入单个实例?我该如何控制或测试它?

当有其他网站时,单个网站是否仅限于单个实例上的 fraction/portion 个可用资源?

运行多个单个 CPU 实例与具有多个 CPU 的单个实例相比,Azure 网站的优势是什么? (除了可用性)

我们尝试对其中一个站点进行负载测试,当我们仅对 1 个站点进行攻击而其他 2 个站点没有流量时,它似乎从未使用超过 CPU 的 10-15%。这就是让我怀疑负载平衡的原因。

你的第一段是正确的。您将有 3 个 S1 服务器分配给您的站点。

每台服务器将托管所有 3 个站点。对任何站点的请求将随机路由到任何服务器。

但是,默认情况下启用粘性会话,这意味着单个客户端将始终访问同一站点的同一服务器。因此,如果一个客户端真的在攻击一个站点,那么所有负载都将转到一台服务器上。

您可以通过为站点禁用 ARR 的即时亲和力来禁用此行为。您可以通过在 web.config 文件中设置自定义 header Arr-Disable-Session-Affinity = false 来做到这一点。

这里有更详细的说明:https://azure.microsoft.com/blog/2013/11/18/disabling-arrs-instance-affinity-in-windows-azure-web-sites/