对Web应用程序进行压力测试?

253

过去,我使用了微软Web应用程序压力测试工具和Pylot来对web应用程序进行压力测试。我编写了一个简单的首页、登录脚本和网站漫游(在电子商务网站上将几个商品添加到购物车和结算)。

只需用一些开发人员猛攻主页,就几乎总能找到一个严重问题。更多可扩展性问题将在第二阶段浮出水面,甚至在发布后还会有更多问题。

我使用的工具URL是Microsoft Homer(又称Microsoft Web应用程序压力测试工具)和Pylot

这些工具生成的报告对我来说从来没有什么意义,我会花费很多时间试图弄清楚网站能够支持多少并发负载。但这总是值得的,因为最愚蠢的错误和瓶颈总会出现(例如,Web服务器配置不当)。

你都做了些什么,用了哪些工具,并且采用了什么方法取得了成功?对我来说最有趣的部分是提出一种有意义的公式,用于根据压力测试应用程序报告的数字计算应用程序可以支持的并发用户数。

30个回答

6

是的。我刚刚看了一下这个。在找到这个问答之前在谷歌上找到了它。我认为基于Web的应用程序是一个不错的方法,但我不能确定它是否真的会给我的服务器带来压力。尽管如此,试一试还是值得的。说实话,我真的很想注册一个完整的账户。 - Charlie

4

我尝试了WebLoad,这是一个相当不错的工具。它配备了测试脚本IDE,可以记录用户在网站上的操作。在对您的Web服务器进行压力测试时,它还会绘制图表。试试吧,我强烈推荐它。


1
我也推荐WebLoad。它是一个非常好的工具,易于使用,并且报告非常有帮助。我假设你在使用Windows平台,因此这些结果结合perfmon将让你知道几乎所有你需要知道的东西。 - Babak Naffas
2

请注意,WebLoad现在是纯商业软件。他们发送电子邮件说,引用:

-WebLOAD开源已被宣布为生命周期结束(EOL)

-如果您仍然拥有该产品的版本,我们提醒您,在最终用户许可协议下,任何分发该产品或将其用于为第三方提供服务都是严格禁止的。

禁止分发开源版本?甚至禁止以他们不喜欢的方式使用?这不是我想要涉及的行为。
- Joshdan
1
链接的域名现在只是广告 - 原始域名已过期。 - dodgy_coder
@Joshdan 这就是为什么 GPL 如此重要的原因。 - Thorbjørn Ravn Andersen

3

我尝试了所有提到的方法,最终发现curl-loader是最适合我的目的。它有非常简单易用的界面、实时监控和有用的统计数据,可以用来生成性能图表。它包含了libcurl的所有功能。


3
Blaze Meter有一个Chrome扩展程序,用于记录会话并将其导出到JMeter(目前需要登录)。您还可以选择向他们支付费用,在他们的一群JMeter服务器上运行它(他们的定价似乎比我刚刚停止使用的LoadImpact更好): 我与他们没有任何关联,我只是喜欢他们的服务,尽管我还没有使用过付费版本。

2

您大约一年前提出了这个问题,我不知道您是否仍在寻找另一种基准测试您的网站的方法。然而,由于这个问题仍未标记为已解决,我想建议您使用免费的网络服务LoadImpact(顺便说一下,我们与其无关)。我刚通过Twitter获得了这个链接,想分享一下这个发现。他们创建了一个相当好的概述,如果再多花一些钱,您将获得“完整影响模式”。这可能听起来很奇怪,但祝您好运推广和打破您的服务 :)


1

Visual Studio Test Edition 2010(2008年版本也很好)。这是一个非常易于使用且功能强大的工具,用于创建web/load测试。

在针对Windows服务器使用时,此工具的优势在于您可以在报告中获得对所有perfmon服务器统计信息的集成访问。真正有用。

另一个好处是,使用Visual Studio项目,您可以集成“Performance Session”,以分析您网站的代码执行性能。

如果您正在从Windows服务器提供网页,则这是目前最好的工具。

然而,要想使用多台机器对应用程序进行负载测试,则需要单独且昂贵的许可证。


1

这里提到了很多好的工具。我想知道,这些工具是否能回答“如何对Web应用进行压力测试”的问题?实际上,这些工具并没有提供一种压力测试Web应用的方法。以下是我的了解:

压力测试展示了Web应用在为越来越多的用户提供响应时出现故障的情况。压力测试展示了Web应用在出现故障时的运行情况。今天的大多数Web应用 - 特别是社交/移动Web应用 - 都是服务的集成。例如,当Facebook在2011年5月发生故障时,您无法登录Pepsi.com的Web应用程序。该应用程序并没有完全失败,只是其正常功能的一部分变得不可用于用户。

性能测试展示了Web应用程序在有多少用户同时使用应用程序时维持响应时间的能力。例如,一个应用程序每秒处理10个事务,有10个并发用户使用应用程序,则应该处理20个每秒的事务。如果应用程序每秒处理的事务少于20个,则响应时间会变长,应用程序无法实现线性可扩展性。

此外,在上述示例中,每秒事务数应仅针对测试用例/工作流程的成功操作进行计算。失败通常发生在较短的时间跨度内,并且会使TPS测量过于乐观。由于它们也会对应用程序产生负载,因此故障对于压力和性能测试非常重要。
我在TestMaker用户指南中编写了PushToTest方法论http://www.pushtotest.com/pushtotest-testmaker-6-methodology。 TestMaker有两个版本:开源(GPL)社区版和TestMaker企业版(商业版,提供出色的专业支持)。
-Frank

1
这完全没有回答提问者的问题。 - Corey Goldberg

1
请查看LoadBooster(https://www.loadbooster.com)。它使用无头可编程浏览器PhantomJS/CasperJs来测试网站。Phantomjs将解析和渲染每个页面,执行客户端脚本。无头浏览器方法更容易编写测试场景以支持复杂的AJAX重型Web 2.0应用程序,浏览器导航、鼠标单击和按键输入到浏览器,或者等待元素在DOM中存在。LoadBooster还支持selenium HTML脚本。免责声明:我为LoadBooster工作。

注意:对于未来的读者,LoadBooster已不存在。 - 0xTheOldOne

1

尝试使用ZebraTester,它比jMeter更易于使用。我已经使用jMeter很长时间了,但是负载测试的总设置时间总是一个问题。虽然ZebraTester不是开源的,但在过去六个月中我节省的时间弥补了这一点。他们还有一个SaaS门户,可以使用他们的负载生成器快速运行测试。


1
我们使用了微软提到的工具 - 微软Web应用程序压力测试工具。这是我使用过的最简单的工具之一。它在许多方面都有限制,包括只能在手动创建的测试中命中端口80。但是,它易于使用,这意味着它实际上会被使用。
我们使用其他工具来补充这个工具的负载,包括OpenSTA和链接检查蜘蛛。
从我的初步评估来看,JMeter看起来不错,我希望将其纳入我们的持续集成中。但是,JMeter很复杂,而且推广不是一件容易的事情。
我建议另开一个问题,关于如何解释MS压力测试工具的结果。

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