Azure Web App 未及时自动缩放

Posted

技术标签:

【中文标题】Azure Web App 未及时自动缩放【英文标题】:Azure Web App not autoscaling in time 【发布时间】:2015-09-10 10:20:48 【问题描述】:

更新:它现在似乎正在工作。

我已将我们的 Azure Web 应用程序配置为在 4 到 10 个实例之间扩展,以实现 80% 以上和 60% 以下的 CPU 负载。

我们的网站现在已经超过 95% 的 CPU 负载超过两个小时,并且没有发生自动缩放。

查看“时间表和性能规则”时,我看到持续时间(分钟)为 300。

我觉得这应该是 10 分钟,但是当我设置它并保存(使用有效的验证规则)时,我收到了这个错误:

是我做错了什么还是门户中有错误?

在我手动增加到 5 然后又减少到 4 后,我可以在管理服务日志中看到自动缩放工作:

ActiveAutoscaleProfile:    "Name": "Default",   "Capacity": 
    "Minimum": "2",
    "Maximum": "10",
    "Default": "2"   ,   "Rules": [
    
      "MetricTrigger": 
        "Name": "CpuPercentage",
        "Namespace": "",
        "Resource": "xxx",
        "ResourceLocation": "West Europe",
        "TimeGrain": "PT1H",
        "Statistic": "Average",
        "TimeWindow": "PT5H",
        "TimeAggregation": "Average",
        "Operator": "GreaterThanOrEqual",
        "Threshold": 80.0,
        "Source": "xxx"
      ,
      "ScaleAction": 
        "Direction": "Increase",
        "Type": "ChangeCount",
        "Value": "1",
        "Cooldown": "PT5M"
      
    ,
    
      "MetricTrigger": 
        "Name": "CpuPercentage",
        "Namespace": "",
        "Resource": "xxx",
        "ResourceLocation": "West Europe",
        "TimeGrain": "PT1H",
        "Statistic": "Average",
        "TimeWindow": "PT5H",
        "TimeAggregation": "Average",
        "Operator": "LessThan",
        "Threshold": 60.0,
        "Source": "xxx"
      ,
      "ScaleAction": 
        "Direction": "Decrease",
        "Type": "ChangeCount",
        "Value": "1",
        "Cooldown": "PT5M"
      
       ] 

Description: The autoscale engine attempting to scale resource xxx' from 3 instances count to 2 instances count.

LastScaleActionTime: Wed, 03 Jun 2015 09:11:38 GMT

Microsoft.Resources/EventNameV2: Autoscale a resource.

Microsoft.Resources/Operation: Scale down

Microsoft.Resources/ResourceUri: /xxx

NewInstancesCount: 2

OldInstancesCount: 3

ResourceName: xxx

所以我可以看到自动缩放确实有效。

可以通过编程方式更改值吗?

【问题讨论】:

【参考方案1】:

这似乎是预览门户中的一个错误。如果您想投票,我已经对此here 提供了反馈。

问题与作为自动缩放规则的一部分存在于 MetricTrigger 中的 TimeGrain 属性有关。预览门户似乎将此值默认为 1 小时(“PT1H”),无法更改。这可以防止您将门户中的持续时间设置为小于 60 分钟的值。

作为一种解决方法,如果您使用当前门户 https://manage.windowsazure.com,并在那里为您的 Web 应用程序配置按 CPU 自动缩放,然后返回预览门户,您将能够将持续时间设置为低至 5分钟。

最后,回答您有关以编程方式设置的问题。是的,这可以使用管理库来实现。我将展示如何为云服务做到这一点here。但是,对于 Web 应用程序,它应该相同(或非常相似)。这是一年多以前的事了,所以它可能不会像我写的那样 100% 工作,但看起来 MetricTrigger 类仍然基本相同,这将是你大部分注意力的地方。

【讨论】:

您描述的解决方法有效,我已将时间设置为 10 分钟。我希望有更好的方法来报告错误然后提出建议,但我添加了我的投票。

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

Azure - 无法自动缩放,因为未找到监控数据

Azure Pack 是不是支持使用 WASABi 自动缩放 Web 和辅助角色?

windows azure 自动缩放

Azure 云服务内置自动缩放如何工作?

Azure Web 角色通过 Autoscaler 不断回收

Azure 自动缩放规则映射不正确