3

我们正在创建一个简单的网站,但有大量用户登录(大约 25000 个并发用户)。我如何计算没有。支持它所需的实例数?

4

4 回答 4

8

负载测试和性能测试确实是您确定应用程序的性能指标和实例要求的唯一方法。您需要定义“并发用户”——这意味着 25,000 个并发事务,还是仅仅意味着 25,000 个活动会话?如果是后者,用户访问网页的频率如何(例如页面之间的思考时间)?然后是所有其他活动部分:数据库、Azure 存储、外部 Web 服务、角色内通信等。处理管道中的所有这些步骤都可能成为瓶颈。

不要忘记 SLA:假设您可以支持 25,000 个并发会话(不是每秒事务数),那么可接受的往返时间是多少?两秒?五?

在考虑实例计数时,您还需要在等式中考虑 VM 大小。例如,再次取决于您的处理管道,您可能需要一个中型或大型 VM 来支持特定的内存要求。在测试不同的 VM 大小时,您可能会得到完全不同的结果。

您需要有一种方法来执行可重复的经验测试并消除边缘情况错误(例如:运行测试至少 3 次以获得平均值;并以明确定义的方式有条不紊地增加负载并观察结果,同时在该负载下保持一定的时间,以使添加负载的混乱行为稳定下来)。这种经验测试包括精心设计的测试计划(例如,对于给定的使用场景,用户将点击哪些页面,包括可能的表单数据)。而且您需要适当的工具来监控被测系统,以确定给定负载何时会创建“曲线拐点”(意味着您已经遇到瓶颈并且性能下降)。

最后的想法:确保您的负载生成工具不是测试期间的瓶颈!您可能想考虑使用 Microsoft 的负载测试解决方案和 Visual Studio,或基于云的负载测试解决方案,例如Loadstorm(免责声明:Loadstorm去年就负载/性能测试采访了我,但我不为他们工作以任何身份)。

编辑 2013 年 6 月 21 日在 TechEd 2013 上宣布,Team Foundation Service 将提供基于云的负载测试,预览版将于 6 月 26 日发布,与 //build 会议同时进行。公告在这里

于 2010-11-11T08:23:03.663 回答
2

如果没有更多信息,没有人可以回答这个问题......比如您使用什么技术来构建网站,页面加载时会发生什么,使用什么后端存储(如果有的话)等等。这可能是为了每个登录的用户,您计算一百万位数的 pi,或者您可能为每个用户从缓存中提供静态内容。

我的最佳建议是测试您的应用程序(在云中或等效硬件中)并查看它的性能。

于 2010-11-10T09:42:55.013 回答
1

这完全取决于架构设计、持久性技术和每秒执行的读/写操作数(平均/峰值)。

我建议研究这种应用程序的基于 CQRS 的架构。它适合云计算环境并允许弹性扩展。

于 2010-11-10T11:15:43.183 回答
0

我最近参加了一个云峰会,有一些案例研究。让我印象深刻的是一个考试应用程序。它在 2 小时内有大约 80000 个用户的突发负载,为此他们启动了大约 300 个实例。

在不了解您的负载配置文件的情况下,很难增加更多价值,请记住并发和连续不是一回事。还记得 Stack 溢出与 Digg 的崩溃“http://twitter.com/#!/spolsky/status/27244766467”吗?

于 2010-12-04T21:51:29.180 回答