在过去,我使用微软Web应用程序压力测试工具和Pylot对Web应用程序进行压力测试。我写了一个简单的主页、登录脚本和站点演练(在一个电子商务网站中添加一些商品到购物车和结帐)。

只要让少数开发人员在主页上使劲敲一下,就几乎总能找到一个主要问题。更多的可伸缩性问题将在第二阶段浮出水面,甚至更多——在发布之后。

我使用的工具的URL是Microsoft Homer(又名Microsoft Web Application Stress Tool)和Pylot。

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

你做了什么,你使用了什么工具,你的方法有什么成功?对我来说,最有趣的部分是提出某种有意义的公式,用于从压力测试应用程序报告的数字中计算应用程序可以支持的并发用户数。


当前回答

我玩JMeter。一个认为它不能不测试的是ASP。净Webforms。视图状态破坏了我的测试。我不知道为什么,但是有一些工具不能正确处理视图状态。我目前的项目是ASP。NET MVC和JMeter都能很好地与之配合。

其他回答

我们使用提到的微软工具——微软Web应用程序压力工具。这是我用过的最简单的工具。它在许多方面都受到限制,包括只能在手动创建的测试中命中端口80。但是,它的易用性意味着它确实被使用了。

我们用其他工具(包括OpenSTA和链接检查蜘蛛)来补充这个工具的负载。

从我的初步评估来看,JMeter看起来不错,我希望它能包括在我们未来的持续集成中。但是,JMeter是复杂的,推出起来并不简单。

我建议提出另一个关于解释MS压力工具结果的问题。

Visual Studio测试版2010(2008年也不错)。这是一个非常简单和强大的工具来创建web/负载测试。

在Windows服务器上使用此工具的好处是,您可以在报告中集成访问所有perfmon服务器统计信息。真的有用。

另一个好处是,在Visual Studio项目中,你可以集成一个“性能会话”来分析你网站的代码执行情况。

如果你在windows服务器上提供网页服务,这是最好的工具。

然而,使用多台机器来加载测试应用程序需要一个单独且昂贵的许可证。

我们最近开始使用Gatling进行负载测试。我强烈推荐使用这个工具进行负载测试。我们过去使用过SOASTA和JMETER。我们考虑加特林的主要原因如下:

记录仪对场景进行记录 使用Akka和Netty相比性能更好 Jmeter线程模型 DSL Scala相比Jmeter XML更易于维护 编写测试很容易,如果是scala也不用害怕。 报告

让我给你一个简单的例子来写代码使用加特林代码:

// your code starts here  
val scn = scenario("Scenario")  
     .exec(http("Page")
     .get("http://example.com")) 
// injecting 100 user enter code here's on above scenario.   
setUp(scn.inject(atOnceUsers(100)))       

但是你可以让它越复杂越好。加特林的突出特点之一是报告非常详细。

以下是一些链接: 加特林 加特林教程

我最近做了一个关于它的演讲,你可以在这里看一下: https://docs.google.com/viewer?url=http%3A%2F%2Ffiles.meetup.com%2F3872152%2FExploring-Load-Testing-with-Gatling.pdf

尝试了这里提到的所有方法,我发现卷曲加载器最适合我的目的。非常简单的界面,实时监控,有用的统计数据,从中我建立了性能图表。libcurl的所有特性都包含在内。

为了简单的使用,我更喜欢ab(apache基准)和围攻,后来需要一个,因为ab不支持cookie,会从动态站点创建无休止的会话。

这两种方法都很简单:

ab -c n -t 30 url

siege -b -c n -t 30s url

围攻可以运行更多的网址。

最后一个攻城版本在攻城中打开啰嗦,这很烦人。您只能通过编辑该文件(/usr/local/etc/siegerc)来禁用它。