如何为网站设置负载/压力测试?

12

我被突然指派负责对公司网站进行压力测试和负载测试,但是对此一无所知。我在谷歌上搜索“如何对网站进行负载测试”时,只找到了各种公司和软件来执行负载测试。

目前我更关心的是如何开始进行负载测试,包括在进行负载测试之前应该考虑哪些因素、应该测试哪些网页以及在测试时需要监控哪些方面。我们的网站采用多层系统,包括一个独立的数据库服务器(IIS 7 Web Server,SQL Server 2000 db)。我想要同时监控Web服务器和数据库服务器来测试负载,但是当设置负载测试方案时,我必须使用查询数据库的页面来查看同时对数据库服务器产生的压力。

通常,Web服务器和数据库服务器会同时进行测试还是分开测试?

可以看出我对整个操作一无所知,因此任何有关如何进行负载测试的建议都将非常有帮助。

顺便说一下,我一直在尝试使用Pylot,并成功地创建和运行了针对我们网站的测试场景,但我不确定在结果中应该寻找什么,或者我创建的场景是否值得为我们的网站测量。

提前感谢您的帮助。


请参阅http://stackoverflow.com/questions/340564/best-way-to-stress-test-a-website,其中解释了如何使用Firefox插件[Selenium](http://seleniumhq.org/)来实现它。 - Gregory Pakosz
我想补充一点,如果你选择使用Selenium,可以去浏览http://browsermob.com ,了解如何同时获取数百个Selenium实例并让它们一起协调,以压测你的网站。需要注意的是:我是BrowserMob和OpenQA的创始人之一,也是Selenium RC的创造者之一。 - Patrick Lightbody
7个回答

3

请查看JMeter。我发现开始使用有些棘手,但一旦设置好测试,运行起来很容易。他们在这里提供了如何设置分布式测试的教程


2
一般来说,负载测试将通过不同的用户负载运行常见场景。例如,您可以设置一个测试,每秒50个用户登录10分钟,另一个测试从每秒5个用户开始逐步扩大到每秒1000个用户或者任何对您的网站有意义的数字。

编辑:
其目的是测试您的实际应用程序在所有层面上使用时的行为。如果您要进行负载测试,请务必投资(时间和/或金钱)购买好的工具。

1

从这个问题的答案中可以看出,有很多可用于负载测试的程序。在我的经验中,我发现Siege是我个人最喜欢的。它简单易用,提供了大部分进行负载测试所需的选项。以下是一个使用示例:

seige -c 10 -t 1M http://www.google.com

这将在一分钟内向google.com发送10个并发请求。如果您想测试多个页面,还可以提供包含URL列表的文件。

请注意,像seige这样的工具适用于您想要测试的单个或一组URL。如果您想测试更复杂的流程(例如用户登录,提交条目,注销),则需要使用诸如selenium之类的工具。


你不能使用Seige测试SPA。你需要一个虚拟浏览器来完成测试。 - opengrid

1

1

对于现有网站或相同替换的第一步是收集和分析统计数据。

如果预测结果超出中心极限,那么首先建模预测就没有意义。(无论如何,在严格的方法下,它们仍会出现)

在所有情况下,您都应该与NOC的某个人协作。理由太明显了,支持英雄主义方法的线程对您的公司不利;尤其是当您一边学习一边前进时。并不是说您不能成为英雄,但是NOC通常会对在决策会议上提出的性能数字表示强烈反感。


0

首先,获取一个像 Neoload 这样的 web 压测工具。

模拟多个用户活动并偏向于预测的用户模式,然后按照需要扩大负载。对数据库运行查询并测量响应时间对用户体验毫无意义。相反,通过建立用户活动模型,您可以准确地评估您的服务器/系统在真实负载下的响应,因为这就是您将要生成的。

用户活动建模可能会变得相当复杂,但像 Neoload 这样的好的压力测试工具可以让您密切模拟任何连接到您的服务器的机器的确切行为。理想情况下,您应该像平常一样精心制作网络流量,所以如果您有一个负载均衡器,请确保它受到影响。


你看过他们的价格了吗? - opengrid

0

我发现使用Visual Studio测试版更容易进行测试(尽管它不是免费的)。您可以将浏览会话记录为单个测试,并且它将允许您轻松地读取来自Web服务器和数据库的perfmon统计信息。

您应该采取的第一步是查看您的IIS日志,以了解那里发生了什么。 Log Parser 2是我会使用的工具,它可以将IIS日志放入数据库中。

查询它将给您一个峰值负载的想法。

下一步是为测试制定一个或两个目标。您需要确保网站能够处理每秒X个请求的单个页面或两个页面的高峰负载吗?

如果您打算增加网站的客户,那么请考虑当前的IIS日志负载,并制定可以模拟该页面请求范围但针对预期并发用户进行负载的Web测试。

如果您打算更改网站上的功能,则可以进行基准负载测试,并在对站点进行任何更改后比较性能。

在负载测试中真正的目标是证明应用程序和硬件能够处理业务认为可接受的目标负载,并且仍然能够在合理的时间内返回页面。

我们是微软的合作伙伴,所以我们可能已经可以访问那个工具了。谢谢。回答你的一些问题,我没有被给予任何特定的测试目标,所以我想我只是在当前配置下对系统进行基准测试。 - Ryan
把IIS日志活动分解成一组Web测试,创建一个负载测试以获得测试比例的正确性。转到2010年,它非常好用,即使在Beta版中也能很好地工作。 - Nat

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