windows azure 自动缩放

Posted

技术标签:

【中文标题】windows azure 自动缩放【英文标题】:windows azure automatic scaling 【发布时间】:2015-04-18 06:26:46 【问题描述】:

您好,我在 Windows Azure 上部署了一个 Web 应用程序作为云服务。现在我正在对这个应用程序执行一些负载/压力测试。在 Azure 管理门户中,我已将 Web 角色配置为在 CPU 超过 40% 时自动扩展。

我只使用此 Web 角色的一个实例开始测试。随着测试的进行,我将并发用户数设置为随着时间的推移增加到 2000 个用户。

开始测试后,我通过远程桌面连接到 Azure 上的 Web 角色实例并监控 CPU 使用情况。大约 10 分钟后,CPU 一直保持在 100%(实际上我在测试中的请求需要很长时间才能完成)但是如果我在 Azure 管理门户上检查同一 Web 角色的 CPU,它会显示 1 , 2 或 6,有 70% 的峰值,但它立即回落(但从来没有我在远程桌面连接时在其任务管理器中看到的值)甚至不显示任何值(我转到仪表板页面我的云服务),这意味着图表不再更新。

此外,这就是我的问题的重点,不会对 Web 角色实例进行任何缩放。

有什么想法/我缺少什么吗?如果我的解释不完整,请随时询问。

【问题讨论】:

自动缩放基于打开预配置的虚拟机。你设置了那些? azure.microsoft.com/en-us/documentation/articles/… 嗨,大卫,我已经阅读了这篇文章,不是 100% 确定我明白了你的意思,但是在管理门户的“规模”页面中,我已将实例范围从最小值设置为 1 到最多可扩展或缩减 6 个实例 @DavidPeden - OP 在云服务中使用 Web 角色,而不是虚拟机。所以......使用预配置的虚拟机不是这里的等式的一部分。 【参考方案1】:

需要考虑的几点:

1) 正如 Rick 指出的那样,默认情况下 CPU 平均每小时占用一次

2) 如果您仅从 1 台服务器开始,然后自动扩展至 2 台,则在扩展操作期间您的第一台服务器将被拉出负载均衡器。您确实应该始终拥有至少 2 台服务器。

3) 随时查看 AzureWatch(我的个人资料中的链接)。它旨在执行相当高级的扩展方案,并允许您在不接触 API 的情况下配置扩展规则

【讨论】:

嗨@Igorek,你能详细说明第2点吗?为什么要为扩展操作重启第一个实例? @DirkBoer 需要稍微澄清一下,在调用Scaling操作时,实际上是执行了ChangeDeployment API方法。 ChangeDeployment 将一次将所有服务器从负载均衡器中拉出一个(如果您只有一个,您将暂时失去连接)。此外,如果您处理 RoleEnvironmentChanging 事件,请确保在拓扑事件发生时防止重新启动 嗨@Igorek,感谢您抽出宝贵时间来回答。我将不得不查找有关 ChangeDeployment 和 RoleEnvironmentChanging 事件的更多信息。谢谢! :)【参考方案2】:

云服务或虚拟机的 CPU 指标自动缩放不会像您预期的那样快(大约 10 分钟以上)。在这种情况下,CPU 指标在 1 小时内对所有服务实例进行平均。因此,您的自动缩放操作不会立即生效。

您可以阅读有关此内容的更多信息以及配置自动缩放设置的一些建议here。

如果您想进一步加强这一点,请查看this post,我在其中展示了如何使用监控服务管理库设置 TimeWindow。采用这种方法,您或许能够更接近达到您想要的效果。

【讨论】:

Thanx 实际上我没有找到任何关于“平均 CPU”计算时间的信息,我认为这是管理门户。运行测试 2 小时使其按预期扩展。

以上是关于windows azure 自动缩放的主要内容,如果未能解决你的问题,请参考以下文章

Windows Azure 自动缩放 - 在部署中找不到托管服务中定义的角色

如何在 Windows azure 中有效扩展?

Azure App Service-多语言/高可用/自动缩放的Web托管服务

基于 Windows Azure CPU 时间的缩放?

如何禁用Windows系统对exe程序的自动缩放?

如何禁用Windows系统对exe程序的自动缩放?