c# - 如何在Windows Azure中有效扩展?

标签 c# azure concurrency scalability azure-web-roles

我在确定有效扩展云服务的正确配置方面遇到了一些困难。我假设我们只需要使用管理门户的缩放部分,而不需要以编程方式进行任何操作? 我当前的 Web 角色配置是

中型虚拟机(4 GB RAM) 自动缩放 - CPU 实例范围 - 1 到 10 objective-c PU - 50 到 80 一次按 1 个实例向上和向下缩放 向上和向下缩放等待时间 - 5 分钟

我用了http://loader.io/站点通过向 API 发送并发请求来进行负载测试。而且只能支持50-100个用户。之后我收到超时(10 秒)错误。 我的应用程序将大规模面向数百万用户,因此我不太确定如何有效地扩展以满足服务器上如此大的负载。

我认为问题可能是扩展时间为 5 分钟(我认为它非常长),而在管理门户中,最低选项是 5 分钟,所以不知道如何减少它?

有什么建议吗?

最佳答案

Azure 的自动缩放引擎每 5 分钟检查一次 60 分钟的 CPU 使用率平均值。这意味着每 5 分钟它就有一次机会决定您的 CPU 利用率是否过高并进行扩展。

如果您需要更强大的东西,我建议考虑以下内容:

  • CPU 使用率很少是网站扩展的良好指标。看 转换为请求数/秒或请求数/当前数,而不是 CPU 利用率。
  • 考虑检查是否需要更频繁地扩展(每 1 分钟?) Azure 门户无法执行此操作。您需要 WASABi或者 AzureWatch为此
  • 根据您的使用模式,考虑查看较短的时间平均值来做出决定(即:20 分钟而不是 60 分钟的平均值)。再次强调,您的选择是 WASABi 或 AzureWatch
  • 考虑查看增长率/增长率/ 在指标中,而不仅仅是最新平均值本身。 IE: 过去 20 分钟内每秒请求数增加了 20%。再一次, azure 自动缩放引擎无法做到这一点,请考虑 WASABi(可能 这样做)或 AzureWatch 绝对可以做到这一点。

WASABi是来自 Microsoft 的应用程序 block (即:DLL),您需要自己在某处配置、托管和监视。它非常灵活,您可以覆盖任何功能,因为它是开源的。

AzureWatch是一项第三方托管服务,用于监视/自动缩放/修复您的 Azure 角色/虚拟机/网站/SQL Azure/等。这要花钱,但你让别人做所有肮脏的工作。

我最近wrote a blog关于三款产品的对比

披露:我隶属于 AzureWatch

HTH

关于c# - 如何在Windows Azure中有效扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18150884/

相关文章:

c# - WPF缩放 Canvas 在鼠标位置上居中

azure - 使用 Microsoft Graph 更新组时获取 code=OrganizationFromTenantGuidNotFound

c# - 如何将调试器附加到 Windows Azure VM 上运行的应用程序?

c# - 是什么阻止我的事件处理程序方法完成?

并发访问和释放堆对象

Java Paint 'stuttering' -列表并发

c# - 将数据集中每行的列值存储到 string[ ]

c# - 仅当 DateTime 尚未转换为 Utc 时才将其转换为 Utc

可以选择由子类实现的 C# 方法,无需基方法

azure - 如何使用参数在azure devops中使用OR任务条件