Azure 包含弹性缩放的概念,我已经能够通过我的Worker Roles实现这一点。但是,当涉及到我的Web 角色(例如 MVC 应用程序)时,我不确定要监控什么(或如何)来确定何时是增加(或减少)运行实例数量的好时机。我假设我需要监控一个或多个性能计数器,但不确定从哪里开始。
任何人都可以推荐一种最佳实践来评估与扩展决策相关的 MVC Web 角色实例负载吗?
Azure 包含弹性缩放的概念,我已经能够通过我的Worker Roles实现这一点。但是,当涉及到我的Web 角色(例如 MVC 应用程序)时,我不确定要监控什么(或如何)来确定何时是增加(或减少)运行实例数量的好时机。我假设我需要监控一个或多个性能计数器,但不确定从哪里开始。
任何人都可以推荐一种最佳实践来评估与扩展决策相关的 MVC Web 角色实例负载吗?
这个问题有点开放,因为监控通常是特定于应用程序的。话说回来:
从您在本地服务器上查看的简单测量开始,代表您的应用程序的 KPI。例如:也许看看网络利用率。这篇 TechNet 文章介绍了 System Center for Windows Azure 收集的性能计数器。例如:
您可能还想查看排队的请求数和请求等待时间。
网络利用率很有趣,因为您的 NIC 提供大约。每个内核 100Mbps,即使 CPU 和其他资源未得到充分利用,最终也可能成为瓶颈。您可能需要扩展到更多实例来处理高带宽方案。
另外:我倾向于不太重视 CPU 利用率,尽管它很容易衡量(并且在示例中经常出现)。以接近容量运行 CPU 通常是一件好事,因为您正在为此付费并且尽可能多地使用它。
至于减少:这需要更小心地处理。Windows Azure 计算按小时计费。例如,如果您在 11:50 横向扩展至一个额外的实例,并在 12:10 再次横向缩减,那么您刚刚花费了两个 cpu 小时。另外:您不想扩大规模,然后进行新的测量并决定现在可以再次缩小规模(有效地创建一个不断增加和减少实例的脉冲)。为了让事情变得更简单,请考虑在Enterprise Library中找到的 Autoscaling Application Block (WASABi) 。这包含了所有的比例规则(比如我刚才提到的那些),并且使用起来非常简单。