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

如果 三个网站中只有一个 从单一来源 (另一台异地服务器)获得非常高的流量 是如何在 3 个实例之间平衡负载的?

是所有请求都去循环还是都尝试去单个实例?我如何控制或测试这个?

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

使用 Azure 网站运行多个单 CPU 实例与具有多个 CPU 的单个实例相比有哪些优势? (除了可用性)

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

最佳答案

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

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

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

您可以通过为站点禁用 ARR 的 Instancy Affinity 来禁用此行为。您可以通过在 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/

关于azure - 如何在应用服务计划上的多个实例之间平衡多个网站的负载?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32107855/

10-16 09:26
查看更多