Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在windows azure中有效扩展?_C#_Azure_Concurrency_Scalability_Azure Web Roles - Fatal编程技术网

C# 如何在windows azure中有效扩展?

C# 如何在windows azure中有效扩展?,c#,azure,concurrency,scalability,azure-web-roles,C#,Azure,Concurrency,Scalability,Azure Web Roles,在确定正确的配置以有效扩展云服务方面,我遇到了一些困难。我假设我们只需要使用管理门户的scale部分,而不需要编程? 我当前的Web角色配置为 中型虚拟机(4 GB内存) 自动缩放-CPUInstance范围-1到10目标CPU-50到80在一个时间尺度上下缩放1个实例等待时间-5分钟 我使用该站点通过向API发送并发请求来进行负载测试。而且它只能支持50-100个用户。之后,我得到超时(10秒)错误。 我的应用程序将以数百万用户为目标,规模巨大,因此我不确定如何有效地扩展,以满足服务器上如此大

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

中型虚拟机(4 GB内存) 自动缩放-CPUInstance范围-1到10目标CPU-50到80在一个时间尺度上下缩放1个实例等待时间-5分钟

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

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


有什么建议吗?

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

如果您需要更强大的功能,我建议您考虑以下几点:

  • CPU使用率很少是衡量网站规模的一个好指标。看 转换为每秒请求数或当前请求数,而不是CPU利用率
  • 考虑检查是否需要更频繁地缩放(每1分钟?) Azure门户无法执行此操作。你要么需要,要么需要 为此
  • 根据你的使用模式,考虑更短的时间平均值来决定(平均超过20分钟,而不是60分钟)。再一次,你在这里的选择是芥末或蓝宝石手表
  • 考虑一下增长率 而不仅仅是最新的平均值本身。即: 在过去20分钟内,每秒的请求量增加了20%。再一次,Azure 自动调整引擎无法做到这一点,考虑一下WASABI(可能) 做这个)或AzureWatch,它绝对可以做到这一点
是来自Microsoft的应用程序块(即DLL),您需要自行配置、托管和监视它。它非常灵活,您可以覆盖任何功能,因为它是开源的

是一个第三方托管服务,用于监视/自动缩放/修复您的Azure角色/虚拟机/网站/SQL Azure/等。它需要花钱,但您让其他人来做所有脏活

我最近对这三种产品进行了比较

披露:我隶属于AzureWatch


HTH

最短时间为5分钟的另一个原因是Azure需要一些时间来为您的云服务分配额外的机器,并将您的软件复制到这些机器上。(网络应用没有这个“问题”) 在我作为saas管理员的工作中,我发现对于云服务来说,对于我们的软件包来说,扩展后的加速时间大约为3-5分钟

如果您想在Azure门户中配置扩展,那么我的建议是显著降低您的CPU范围。正如Igorek提到的,Azure scaling查看了过去60分钟的平均值。 如果一个云服务在大部分时间都以5%的CPU运行,那么它会突然达到峰值并以99%的速度运行,平均值需要一段时间才能上升并触发您的比例设置。将其保留在80%将导致缩放发生得太晚。 RL示例: 我管理一个运行一些CPU密集型计算的门户。在正常使用情况下,我们的云服务往往以2-5%的CPU运行,但在极少数情况下,我们会看到它上升到99%并保持一段时间

我的第一次扩展尝试是2个实例,并在平均CPU为80%的情况下以2个实例进行扩展,但由于平均CPU没有增长那么快,因此触发事件需要大约40分钟。现在,当平均CPU超过25%时,我将一切都设置为可扩展,我看到的是,我们的服务将在10-12分钟后扩展。 我不是说25%是一个神奇的数字,我是说请记住,你的工作是“平均超过60分钟”


第二件事是Azure门户仅显示有限的一组缩放选项,当您使用Powershell/REST时,可以更详细地设置缩放。例如,计算平均值的60分钟间隔可以降低。

需要澄清的是:你不需要芥末或AzureWatch。还有其他服务,如MetricsHub。您甚至可以通过检查perf计数器、应用程序日志、队列长度等来运行自己的,并且您可以通过PowerShell调用执行缩放操作。说了这么多:自动缩放是复杂的,您可能最好使用@Igorek提到的库或服务。但是还有其他选择。谢谢,我已经注册了Azure watch的试用版。我仍在掌握它的窍门,因为所有的性能计数器都要放进去……有很多选择。我确实查看了web服务部分中的requests/sec选项,它的最小聚合时间是5分钟。如果在1分钟内有1000个请求,而我的网络角色要到5分钟才能扩展,这对我有什么帮助?不幸的是,我想不出任何解决方案来应对没有相关领先指标的超级突然峰值。您需要至少等待5分钟,才能启动X台服务器。然而,如果这些峰值与某种营销/促销计划、一天中的时间、注册量或其他领先指标有关,那么肯定有可能适应提前扩展战略。突然的、意外的峰值是很难实现的。你可以拥有额外的能力来处理一个相当大的峰值(比如说30%-50%,取决于你的风险承受能力/成本平均值)。当然,您可能无法一次承受巨大负载的冲击,但是通过承载一些额外的容量,您可以在其他服务器运行时减少影响。还有,看看