信息化 频道

Windows Azure选择Web实例大小注意事项

  【IT168评论】我们都知道Windows Azure平台为开发人员提供了可以添加额外的虚拟机的能力,在构建Web应用程序时可以使一台虚拟机很容易向外扩展或增加资源资源。 开发人员可以在Windows Azure上部署在Web角色作为一个Web应用程序,并运行指定的实例数量。 每个实例是一个单独的虚拟机运行IIS,并通过设置的负载平衡器配置为接收请求。Web角色的数量可以增加(或减少)管理门户,通过手动或自动通过REST API或自动缩放工具调节。

  Windows Azure平台提供一个垂直的尺度划分标准,能够列举每个角色或虚拟机的大小。下表是来自MSDN中对不同大小空间的描述。

Windows Azure选择Web实例大小注意事项
▲图一 实例大小对资源的占用

  在Windows Azure平台上建立应用程序通常会有一个问题总在困扰着我们:“我们应该选择多大的磁盘空间才算合理呢?”往往很多人给出的答案非常现实但又非常模糊,例如:“这取决于你的应用程序的真实需求。” 当然一些应用程序的开发者将核心数量,内存量或网络环境和磁盘容量的利用都有较好的使用意识和方法尽量合理利用物理资源。当然有些人对这样的说法持保留态度,对于这些人,我们就需要用更深入的分析和说明来帮助大家判断。

  在这篇文章中,我们将提供Web角色大小选择的指导:

  · 一个Web应用程序的性能负载下比较不同的实例大小

  · 保理业务在一个假设的使用模式,以了解结垢的影响,例如大小

  · 针对不同的实例大小缩放评估成本时,

  通过负载测试对比大小空间的选择

  本文中我们用示例应用程序通过Windows Azure诊断仪器来收集性能指标。 下面的代码片段来自我们的应用程序,是收集几个不同的计数器并定期存储数据到Windows Azure存储帐户。

Windows Azure选择Web实例大小注意事项
▲图2:Windows Azure诊断设置

  我们分析收集的计数器使用Cerebrata的Azure诊断管理 。 我们还增加了一个Web界面启动和停止负载测试。 开始测试,包括进入工作角色实例的URL来执行对请求和你想在测试过程中模拟的并发用户数量。

Windows Azure选择Web实例大小注意事项
▲图3:启动负载测试

  在测试过程中,工作角色实例继续执行,直到有人停掉它。这个借口的好处是不仅可以重复模拟对URL的负载请求,还能在很多未来的场景中重用。

  不过我们要清楚的区分并发用户和单独请求之间的区别,在10分钟的时间里要加载200并发用户就要求至少每5秒钟产生一个请求,那一共系统将产生50000个请求。

  透过结果看本质

  结合上面表格中给定的不同实例对硬件环境的不同要求,我们对比2个中等规模的实例和4个小型实例。同时,我们又加入了3个小型实例的测试进行对比。加载了500个并发用户后运行了至少十几分钟的结果。结果不出所料的我们看到平均每秒返回请求数量随着并发用户的增加而增加。我们也看到测试中的两个中等大小的实例处理的请求数量大于三个或四个实例的测试。

Windows Azure选择Web实例大小注意事项
▲图4:平均每秒请求数

  接下来让让我们看看如果我们可以发现随着负载的增加,在性能上的差异。

  首先,让我们看到如何影响响应时间的,每一个请求的相应时间包括加载负载的被捕获和合并计算的时间。

Windows Azure选择Web实例大小注意事项
▲图5:平均响应时间

  正如你可以看到,平均响应时间(毫秒)是随负荷增加而增长。 增加运行三个小实例在我们的场景更戏剧性。 在两个中等实例与四个小型实例相比较,结果是相似的,有两个略优于四个小型实例的测试。

  接下来,让我们来看看实例的是的CPU性能测试。 这里有一个图表,显示了这些不同的场景的角色实例的平均CPU占用率。

Windows Azure选择Web实例大小注意事项
▲图6:CPU占用指标

  在角色实例之间的平均CPU占用率方面,你可以看到两个中等实例和四个小实例非常相似,而三个小的情况下跑出更高。 有些人会建议当CPU占用75%时就需要扩大硬件资源。在应用该阈值的时候,可以看到为500个并发用户在我们的场景中两个中型实例和4个小型实例的负载测试结果非常接近这个阀值,但是三个小型实例超出了其他的。

  我们还可以联系到增加请求数量以提高并发用户数和CPU的测试等级。

  我们还可以联系到增加请求数量以提高并发用户数和CPU的测试等级。 在下面的表格中,你可以看到负载测试期间录制的请求队列记录的最大价值,我们在500个并发用户测试远远高于400个并发用户测试。

Windows Azure选择Web实例大小注意事项
▲图7:请求排队

    从这个数据看,似乎大量的实例队列时间的积极作用要高于单个的实例。

  我们还获得了一个拒绝请求的性能记录,请求等待时间和可用内存(MB为单位)。 我们没有在我们的测试中出现太大的差异。内存保持适当的增加。我们不超载我们的测试应用场景的情况下拒绝请求数量为0。

  当然我们也可以采取更多的这种负载测试,如在线用户数量增加超过500个等方法来验证前文提到的临界值是否合理。

  绝对不是说,一种大小的网络角色实例的大小适合所有的应用场景。 有很多例子需要更大的角色实例,如资源密集型Web应用程序。 哪种大小适合你,得到的答案是,而且将永远是,“视真实的需求而定。” 但使用较小型的实例也有助于空间横向的可扩展性。 本文章中提供的例子比较简单,但它证明了我们的基本前提:确定您的应用程序可以支持最小应该用哪种类型的的实例,以及哪些情况下使用会超过您的需求。

0
相关文章