为 Azure Web 角色定义缩放阈值
Posted
技术标签:
【中文标题】为 Azure Web 角色定义缩放阈值【英文标题】:Defining Scaling Threshold for Azure Web Roles 【发布时间】:2012-09-11 06:58:51 【问题描述】:Azure 包含弹性扩展的概念,我已经能够通过我的 Worker Roles 实现这一点。但是,当涉及到我的 Web 角色(例如 MVC 应用程序)时,我不确定要监控什么(或如何)以确定何时增加(或减少)正在运行的实例数量的好时机。我假设我需要监控一个或多个性能计数器,但不确定从哪里开始。
任何人都可以推荐一个最佳实践来评估与扩展决策相关的 MVC Web 角色实例负载吗?
【问题讨论】:
【参考方案1】:这个问题有点开放,因为监控通常是特定于应用程序的。话虽如此:
从您在本地服务器上查看的简单测量开始,代表您的应用的 KPI。例如:也许看看网络利用率。 This TechNet article 描述了 System Center for Windows Azure 收集的性能计数器。例如:
ASP.NET 应用程序请求/秒 网络接口字节数 接收/秒 每秒发送的网络接口字节数 处理器总处理器时间百分比 LogicalDisk 免费兆字节 LogicalDisk 可用空间百分比 可用内存兆字节您可能还想查看排队的请求数和请求等待时间。
网络利用率很有趣,因为您的 NIC 提供大约。每个内核 100Mbps,即使 CPU 和其他资源未得到充分利用,最终也可能成为瓶颈。您可能需要扩展到更多实例来处理高带宽场景。
另外:我倾向于不太重视 CPU 利用率,尽管它很容易衡量(并且在示例中经常出现)。以接近容量运行 CPU 通常是一件好事,因为您为此付出了代价并且尽可能多地使用它。
至于递减:这需要更加小心地处理。 Windows Azure 计算按小时计费。例如,如果您在 11:50 横向扩展至一个额外的实例,并在 12:10 再次横向缩减,那么您刚刚花费了两个 cpu 小时。另外:您不想扩大规模,然后进行新的测量并决定现在可以再次缩小规模(有效地创建一个不断增加和减少实例的脉冲)。为了让事情变得更简单,请考虑在Enterprise Library 中找到的自动缩放应用程序块 (WASABi)。这包含了所有的比例规则(例如我刚才提到的那些),并且使用起来非常简单。
【讨论】:
除了 David 出色的 cmets 之外,还可以考虑使用自动缩放/监控服务,例如 AzureWatch @paraleap.com 使用历史图表,您可以看到 David 提到的列表中的哪些指标在高涨时期受到压力加载 - 以便您可以基于这些创建自定义缩放规则以上是关于为 Azure Web 角色定义缩放阈值的主要内容,如果未能解决你的问题,请参考以下文章
Azure Pack 是不是支持使用 WASABi 自动缩放 Web 和辅助角色?
CDH存在隐患 : 该角色的进程使用的交换内存为xx兆字节。警告阈值:200字节
CDH存在隐患 : 该角色的进程使用的交换内存为xx兆字节。警告阈值:200字节