在过去,我使用微软Web应用程序压力测试工具和Pylot对Web应用程序进行压力测试。我写了一个简单的主页、登录脚本和站点演练(在一个电子商务网站中添加一些商品到购物车和结帐)。
只要让少数开发人员在主页上使劲敲一下,就几乎总能找到一个主要问题。更多的可伸缩性问题将在第二阶段浮出水面,甚至更多——在发布之后。
我使用的工具的URL是Microsoft Homer(又名Microsoft Web Application Stress Tool)和Pylot。
这些工具生成的报告对我来说没有多大意义,我花了很多时间试图弄清楚站点能够支持什么样的并发负载。这总是值得的,因为最愚蠢的错误和瓶颈总是会出现(例如,web服务器配置错误)。
你做了什么,你使用了什么工具,你的方法有什么成功?对我来说,最有趣的部分是提出某种有意义的公式,用于从压力测试应用程序报告的数字中计算应用程序可以支持的并发用户数。
冒着被指责为无耻的自我推销的风险,我想指出,在我寻求免费负载测试工具的过程中,我访问了这篇文章:http://www.devcurry.com/2010/07/10-free-tools-to-loadstress-test-your.html
要么我无法获得我想要的吞吐量,要么我无法获得我想要的灵活性。并且我想在测试后分析中轻松地聚合多个负载测试生成主机的结果。
我尝试了清单上的每一种工具,但令我沮丧的是,它们没有一种完全符合我的要求。所以我做了一个,并分享它。
这里是:http://sourceforge.net/projects/loadmonger
PS:熟悉城市俚语的人不会对这个名字做出恶意评论。我以前不是,但现在更世故了。
我们最近开始使用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