5

Azure 包含弹性缩放的概念,我已经能够通过我的Worker Roles实现这一点。但是,当涉及到我的Web 角色例如 MVC 应用程序)时,我不确定要监控什么(或如何)来确定何时是增加(减少)运行实例数量的好时机。我假设我需要监控一个或多个性能计数器,但不确定从哪里开始。

任何人都可以推荐一种最佳实践来评估与扩展决策相关的 MVC Web 角色实例负载吗?

4

1 回答 1

4

这个问题有点开放,因为监控通常是特定于应用程序的。话说回来:

从您在本地服务器上查看的简单测量开始,代表您的应用程序的 KPI。例如:也许看看网络利用率。这篇 TechNet 文章介绍了 System Center for Windows Azure 收集的性能计数器。例如:

  • ASP.NET 应用程序请求/秒
  • 网络接口字节
  • 接收/秒
  • 每秒发送的网络接口字节数
  • 处理器 % 处理器时间总计
  • LogicalDisk 免费兆字节
  • 逻辑磁盘 % 可用空间
  • 可用内存兆字节

您可能还想查看排队的请求数和请求等待时间。

网络利用率很有趣,因为您的 NIC 提供大约。每个内核 100Mbps,即使 CPU 和其他资源未得到充分利用,最终也可能成为瓶颈。您可能需要扩展到更多实例来处理高带宽方案。

另外:我倾向于不太重视 CPU 利用率,尽管它很容易衡量(并且在示例中经常出现)。以接近容量运行 CPU 通常是一件好事,因为您正在为此付费并且尽可能多地使用它。

至于减少:这需要更小心地处理。Windows Azure 计算按小时计费。例如,如果您在 11:50 横向扩展至一个额外的实例,并在 12:10 再次横向缩减,那么您刚刚花费了两个 cpu 小时。另外:您不想扩大规模,然后进行新的测量并决定现在可以再次缩小规模(有效地创建一个不断增加和减少实例的脉冲)。为了让事情变得更简单,请考虑在Enterprise Library中找到的 Autoscaling Application Block (WASABi) 。这包含了所有的比例规则(比如我刚才提到的那些),并且使用起来非常简单。

于 2012-09-19T01:50:19.157 回答