Windows Azure应用程序所需的实例数

时间:2011-01-15 09:17:46

标签: azure azure-web-roles instances azure-configuration

我是Windows Azure的新手,想要托管一个由appr填写的调查应用程序。同时有30.000名用户。

该应用程序由1个.aspx页面组成,该页面将被发送到客户端一次,询问25个问题,并在最后给出给定答案的总结。当用户给出答案并点击“下一个问题”按钮时,给定的答案将通过.ashx处理程序发送到服务器。答案是下一个问题和答案。完整回发后,总结将发送给客户端。 答案保存在分区的Azure表中,以便每个分区最多可容纳450个用户。

我想问一下是否有人可以估计我们需要启动多少个Web角色实例才能让这个应用程序继续运行。 (如果这太难说了,是否更有可能启动5,50或500个实例?)

什么是更好的方法:20个小实例或5个大实例?

感谢您的帮助!

3 个答案:

答案 0 :(得分:5)

最明显的答案:您最好通过自己测试并了解您的应用程序如何保持最佳状态。您可以轻松地从Windows Azure中获取性能计数器和其他诊断程序;例如,您可以连接Microsoft SCOM(System Center Operations Manager)以在测试期间监视您的环境。 Site Hammer是一个用于Windows Azure的简单负载测试工具(在MSDN代码库中)。

除了这个非常明显的答案之外,我将分享一些猜测:考虑到负载的类型,你可能更适合使用更小的实例而不是更少的大实例,特别是因为你已经对存储进行了分区。如果你真的要同时拥有30K的访问者,并在阅读问题和阅读之间给他们约15秒的时间间隔。发布他们的答案,你看到每秒2000个请求。 10个节点应该足以处理该负载。请记住,这只是一个简单的估计,在您的架构中缺乏任何形式的洞察力等。对于这些类型的负载,缓存是一个非常好的主意;它将大大增加每个节点可以处理的负载。

但是,我能给你的最好建议是确保你正在积极监控。启动其他实例只需不到30分钟,因此,如果您监控环境和/或确保在开始窒息时收到通知,您可以轻松升级设置。请记住,您确实需要联系客户支持,以便能够访问超过20个实例(这是一个默认限制,以保护您免受过度支出)。

答案 1 :(得分:2)

除了tijmenvdk给你的圣人建议,让我加上我对实例大小的看法。通常,使用支持应用程序的最小尺寸,然后向外扩展以处理增加的流量。这样,当您缩小规模时,您的最低计算成本将保持较低。例如,如果您运行一对超大型实例作为基准(因为您总是希望最少两个实例来获得正常运行时间SLA),那么您的成本占用空间从0.12 x 8 x 2 =每小时1.92美元开始,即使在低 - 交通时间。如果您选择小型实例,则每小时0.12 x 1 x 2 = 0.24美元。

每个VM大小作为关联的CPU,内存和本地9non-durable)磁盘存储,因此选择应用程序有效工作的最小尺寸单位。

对于加载/性能测试,您可能还需要考虑托管解决方案,例如Loadstorm

答案 2 :(得分:0)

现实请求的同步程度如何? 他们都会在同一时间输入地址吗?

也就是说,在本地配置您的应用,这将使您能够估计Azure上的CPU,网络和内存使用情况。然后,看看你如何减少需求,而不是看你需要多少个实例!应用这些提示,然后再次在本地进行配置。

大多数性能提示都在cpu,内存或带宽使用之间进行权衡,其目的是确保它们能够平等地扩展。如果您的应用程序内存不足,但是您有大量CPU和网络,请不要

对于单页调查,请确保您的html,css& js缩小,确保其可缓存。

如果可能的话,将它们组合起来,并获得真正可扩展的,将静态文件(css,js和amp图像)推送到CDN。这一切都减少了网络服务器必须处理的请求数量,因此减少了您需要的webroles数量=减少网络数量。

ashx如何返回响应?即发送html,xml还是json? 就个人而言,我会让它返回JSON,因为这将需要更少的网络带宽,并且很可能更少的服务器端处理=更少的内存和网络。

使用Asyncronous API访问azure存储(这使用IO完成端口释放iis线程以处理更多请求,直到azure存储返回=启用cpu扩展)

tijmenvdk已经提到使用队列来编写。问题清单会改变吗?如果没有,请缓存它们,以便应用程序只需要在启动时从表存储中读取一次,并为每个客户端读取一次以进行最终的总结=以牺牲内存为代价来节省网络和CPU。

所有这些提示同样适用于单个服务器或Web场环境中的普通Web应用程序。

我想说的是,你无法衡量,你无法改进,测量,改进和成本都是齐头并进的。动态扩展将降低成本,但从根本上说,如果您的应用程序尚未经过测量并且资源使用情况未得到优化,那么询问您需要多少实例是毫无意义的。