如何进行网站应用的容量规划并决定部署架构?

4
我有一个部署在小型AWS实例(双核AMD,2.60 GHz,1.7 GB RAM)上的ASP.net Web应用程序。我想对这个服务器进行300个并发用户的负载测试,并为将来设计容量规划和部署架构,以支持25万注册用户使用我的应用程序。
我是这个领域的新手,以前没有做过任何负载测试。
我的应用程序的用例和场景如下:
场景 - 数据库中有250,000个注册用户
并发性 - 5%-7% - 大约17,500人
每个用户都有一个书架,假设每个用户订阅了10本书。每本书大小约为25 MB,共有400页
用例:
1.用户登录
数据库身份验证和授权
2.查看带有书籍图片的书架
书架(.swf)- 400 KB(为每个用户加载)
将加载10张书籍图片(每张图片大约20KB)
为用户分配的catalog.xml - 每个用户30 KB
注意:约有650 KB的数据下载到客户端计算机
3.浏览书籍:点击书籍图像后,以下文件及其大小将下载到客户端计算机
一次性下载:
Reader.swf - 950 KB(第一次下载)
每本书约100 KB的XML数据(单击时)
Book.xml
Annotation.xml
Catalog.xml
Usersettings.xml 40KB * 4 =每个用户160 KB(.swf)
注意:约有1200 KB的数据下载到客户端计算机
请问有人可以建议我如何继续吗?
非常感谢您的帮助!
Amar

我知道这是一个老问题,但我仍然在评论此问题,因为我发现了一篇非常好的文章(https://www.infosys.com/IT-services/independent-validation-testing-services/white-papers/Documents/capacity-testing-websites.pdf)与您的问题相关。 - Bacteria
2个回答

3
完成第一个目标(测试300个用户)非常简单 - 选择一个负载测试工具,构建场景并进行测试。然后进行调整/优化并重复测试。 但我认为您更大的问题是如何处理您的所有容量的测试和计划 - 您说的峰值并发用户数约为18,000。首先,请确保该数字(用户基数的7%)是峰值并发性,而不是平均值。您需要测试峰值。 因此,假设您正在计划使用负载平衡的多服务器集群来处理该负载,下一步是确定单个Web /应用程序服务器的最大容量,而不需要负载平衡器。这为您提供了一个基线,您可以使用它来评估集群的性能。这是一个非常重要的步骤,我们的许多客户都会跳过此步骤,这会对他们自己造成损失。这很重要,因为负载平衡系统在集群中的服务器数量上不是线性扩展的情况有很多种。理想情况下,它应该接近线性扩展,好的系统可以接近线性扩展。您会惊讶地发现,我们经常看到完全不能扩展的系统。我们甚至看到一些系统实际上比单个服务器独立处理时的容量还要低。 确定了这个基线之后,您可以初步估计需要的总服务器数量,并构建集群。我建议先使用2个Web /应用程序服务器进行测试。这应该将您的容量几乎翻倍。如果没有,那么在进行更大的测试之前,您需要确定原因。可能的候选者是负载均衡器设置或数据库(如果单个数据库服务器服务于所有Web /应用程序服务器)。偶尔会发现应用架构本身存在更根本的问题。 当您确信从1个服务器扩展到2个服务器的性能表现最佳时,然后您可以继续扩展到整个集群并测试最大容量。如果您没有看到预期的可扩展性,请准备好回溯 - 尝试3,4,5台服务器等等。 希望这可以帮助您!祝您好运 :)

嗨,Merrill,感谢您的详细解释。它确实帮了我很多。您能否建议我在运行负载测试时需要考虑哪些重要性能因素,并根据这些性能因素进行初步估计。这将对我有很大帮助,再次感谢。 - Amar
当然。我们始终关注最终用户的性能。这意味着我们主要关注页面加载时间和错误。在某些组织中,您可能还有一些其他标准,例如CPU利用率和带宽消耗,您还可以查看其中与其他应用程序共享带宽和CPU的情况。然后,我们使用逐步阶梯配置运行负载增加测试,以确定系统不再满足性能目标的用户级别:http://www.webperformance.com/load_testing/blog/2008/07/load-test-configuration-using-a-stepped-ramp/ - CMerrill
谢谢Merrill,我使用VSTS进行了一轮负载测试,对于200和400个并发用户,在隔离的网络中使用四核服务器和P4机器来生成负载。我考虑了VSTS的默认性能计数器,并发现处理器时间使用率为14.6%,内存使用率为900MB(200个用户)。对于400个用户,处理器时间使用率为21.6%,内存使用率仅为1GB。基于此,我假设四核可以支持高达1500个用户。我的假设正确吗? - Amar
你能否建议我如何计算带宽容量?我在报告中发现,对于400个并发用户,每秒发送的字节数平均为10MB / sec。我进行了15分钟的负载测试。谢谢。 - Amar
你可以对容量做出假设,但很可能是错误的。虽然 CPU 利用率可能会呈线性增长,但也可能不会。或者其他一些因素可能会限制容量,这在 2-400 用户时并不是一个问题。只有通过测试 1500 用户,你才能确定系统是否能够处理它。 - CMerrill
作为一名测试人员,你应该测量网络的容量,而不是像网络工程师那样去计算它。这是唯一知道你真正拥有多少的方法。你可以根据单个用户的带宽需求来计算最大带宽需求。 - CMerrill

0

这个链接:http://support.microsoft.com/kb/231282,包含了一些压力测试网站的工具。

显然,这是一个复杂的领域,因此您可能有250万注册用户(真的有那么多吗?),但有多少是同时在线的,他们将使用网站的哪些区域。 所有这些事情(以及更多),都会影响您系统的容量规划。


嗨,Bravax,我会查看你分享的链接。我已经更新了我的问题,并提供了一些简要的场景和用例。请看一下,看看是否可以帮助进一步回答我的问题。非常感谢。 - Amar
250,000 不等于 2.5 百万注册用户。 - Vishal Verma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接