【问题标题】:Best way to stress test a website [duplicate]对网站进行压力测试的最佳方法[重复]
【发布时间】:2010-09-25 07:54:44
【问题描述】:

这可能是一个错误的问题,但是,在 asp.net Web 应用程序上复制大量负载的最佳方法是什么?有没有一种简单的方法可以模拟特定页面上的许多请求?还是最好使用分析器来跟踪单个请求,然后在性能还不错的情况下从中解决?

最好了解 Web 应用程序与服务器规范的配合情况。我希望能够在我的测试服务器上模拟大量流量,以便我可以确定生产服务器是否足够好(特别是 iis/asp.net 而不是 db 性能)。

【问题讨论】:

  • 如果你看相关内容,关于这个主题的帖子也不少。请参阅压力、负载和性能测试。而且它不需要特定于asp.net,任何http工具都可以完成这项工作。
  • 你是对的,但这里的答案与其他地方不同。似乎值得再问一次。
  • 问题因不具建设性而被关闭,但获得了 +126,被加星标 65 次,观看次数 83,243 次。 :)
  • James 和 FernandoZ 提出了一个很好的观点。重复的帖子将冗余降至最低,这一事实很棒。不幸的是,随着技术的发展,“正确/最佳”的答案已经过时了。因此,几年后,您最终可能会得到过时但排名靠前的信息,这仅仅是因为它有更多的时间来积累投票。同样,更新的解决方案将排名较低,因为它们还没有得到他那么多的支持。
  • @shog 我们可以标记另一个重复吗?

标签: performance stress-testing qa


【解决方案1】:

试试http://loadimpact.com 迄今为止我找到的最好的,但我找不到其他替代品。

【讨论】:

  • 只适用于公共网站。
  • 此工具无法模拟在网站中执行不同的操作。
  • 是的,你可以。为虚拟用户记录场景很容易。我测试了我的 SPA(使用 requirejs 等)并且它有效。
  • 我们可以用它来测试带有 click 和 AJAX 调用的页面吗?
  • 这个站点非常昂贵,将 5000 个测试用户发送到您的站点(在 1 分钟内,典型的高峰流量场景)将花费您 1500 美元(!!)。疯了!
【解决方案2】:

我的建议是你先做一些自动化测试。使用selenium

然后部署 selenium grid 在多台电脑上同时测试。

虽然 Selenium 作为一个自动化测试工具会运行得相当快,但是做一个迷你压力测试。如果您同时在网络上的几台计算机上运行相同的自动化,您将能够看到它的行为。

如果您想记录响应时间,他们有一个很酷的 api,您可以使用它来编写一些脚本来运行您的自动化。

编辑:Selenium 非常易于使用,如果您想测试内容,它会断言页面内容。如果您愿意,它还会复制您在页面中的移动(这是我的建议),只需多次浏览页面,然后将其保存以供自动化使用。避免放置断言,这样 selenium 可能会运行得更快。

【讨论】:

  • 我们将 selenium 广泛用于 UI 测试,我刚刚与我们的首席 QA 人员进行了一次对话,讨论可能会在我们所有的用户机器上部署一个“有效负载”应用程序,该应用程序可以按计划启动 selenium 测试时间。或者更好的是一堆虚拟盒子,它们都可以同时敲击网站。
  • Selenium 是一个简洁的工具,但它并没有让我觉得它是一种有效的压力测试方法。
  • 根据 Selenium FAQ,它不是为负载测试而设计的:selenium-grid.seleniumhq.org/…
  • 实际上,Selenium 可以用作负载测试工具——它只需要大量的 CPU 内核和 RAM。幸运的是,如今,云计算变得非常便宜。我是 Selenium RC 的创建者,也是提供基于 Selenium 的负载测试的 BrowserMob 的创始人。请参阅browsermob.com 了解更多信息。
  • @PatrickLightbody 你的网站 browserMob 似乎被 Neustar 接管了!
【解决方案3】:

JMeter 就是这样一种工具。学习和配置可能有点困难,但通常是值得的。

【讨论】:

  • 很难学,我什至无法开始! ;P
  • 是的,很难学。我正在尝试对本地主机上的网站执行负载测试,以便获得一些统计数据。我想知道的是,当 1000 个用户同时使用它时,加载一个网站需要多少时间。我会继续浏览 SO 来寻找答案。 :)
  • 你能链接一个教程吗?这是一个奇怪的界面...
  • locust.io 旨在解决现有工具的一些缺点。 docs.locust.io/en/latest/what-is-locust.html#background 详细解释了它。这是新的,它的工作原理
【解决方案4】:

ab (apache bench) 工具允许您向单个页面发送多个请求,并指定要使用的客户端数量以及所需的并发连接数。

这可能是开发网站的第一步。只需测试一些具有特定负载的页面。这种基准测试方式可能存在一些问题,例如缓存被过度使用。

稍后您可能需要一个工具来模拟一些具体的流量而不是单个页面。我还没有对此类工具的参考。

【讨论】:

    【解决方案5】:

    也许grinder 会有所帮助?您可以通过线程和轻量级进程模拟并发请求或在多台机器上分发测试。我每次都成功地广泛使用它。

    【讨论】:

    • 忘记补充说它是由 Jython 脚本驱动的
    • 我以为磨床是一个应用程序?
    • 我不可能在我的工作电脑上点击那个链接..
    【解决方案6】:

    我们尝试了一些应用程序,包括商业产品的试用版和免费提供的应用程序。最终,我们试用了Team Test Load Agent 软件的试用版。它绝对工作得很好,而且使用起来相当简单。从长远来看,它支持了我们迁移到 Team Foundation Server 并为部门的所有部分配备适当工具的论点。

    然而,明显的缺点是价格。

    【讨论】:

      【解决方案7】:

      我在此类项目中使用过WebLOAD。创建脚本很容易,并且它内置了对监视 ASP.NET 统计信息的支持

      【讨论】:

      • 仅适用于 PC! :(
      • 只有 50 个免费虚拟用户 :(
      【解决方案8】:

      对于 Web 服务测试、soap rest 或 WCF(包括 WebHttpBinding),请试用 SOA Cleaner。可以从:http://xyrow.com下载。有一个免费版本,它不需要任何安装。它还可以执行负载测试。

      【讨论】:

        【解决方案9】:

        我喜欢的另一个工具是 Open STA:http://opensta.org/

        主要用于性能测试,而且是免费的。

        2018 年更新:

        由于答案很老,OpenSTA 项目似乎不是很活跃(但该工具仍然可用)但现在我还推荐另外两个工具:

        在我看来,Gatling 似乎更好,因为没有限制,而且他们还提供商业企业解决方案并适合 Jenkins 等持续集成工具。

        相反,NeoLoad 有一个免费版本,但仅限于 50 个用户(在某些情况下就足够了)。功能的完整比较是here

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-28
          • 2010-09-23
          • 2017-07-08
          • 1970-01-01
          • 2011-05-14
          • 1970-01-01
          相关资源
          最近更新 更多