【问题标题】:How to test a web service with up to 1 million users?如何测试拥有多达 100 万用户的 Web 服务?
【发布时间】:2016-07-22 17:42:50
【问题描述】:

我想知道如何测试一个拥有多达 100 万活跃用户且同时访问该网站的网络服务。

这是理论上的 - 我没有这样的网络服务,但最近是 reading this article on how to build a scalable app for > 500K users,这让我想知道人们将如何测试它?

为了便于讨论,假设我完全控制了服务并且已经创建了 100 万个测试帐户,用户名 test1 -> test1000000 可用。我希望这些帐户可以从世界各地访问我的服务,但我愿意接受任何建议!

编辑:我熟悉 JMeter 和 Selenium,但担心如果所有客户端活动都从一个位置运行,可能会受到本地网络的瓶颈,因此不是一个很好的测试?因此,与其让 10 个 JMeter 客户端在不同位置运行 10 万个客户端,我认为最好让 1000 个 JMeter 客户端分别测试 1000 个用户,所有这些用户都来自不同的位置……但也许这不是什么大问题?

【问题讨论】:

标签: performance-testing scalability load-testing


【解决方案1】:

我认为从高层次上讲,测试节点可能分布在世界各地。每个都包含验证和执行某种交易的逻辑。测试账户块可以分发到每个节点,每个节点将并行启动测试。

在实际层面上,我会先查看一个框架 locust.io 声称它在其标语行中做到了这一点:)

http://locust.io/

【讨论】:

    【解决方案2】:

    您可以使用apache jmeter 或我的个人喜好siege

    如果发生围攻,我会考虑生成一个 urls.txt 文件,其中包含数百万个 url,每个 url 代表来自用户的调用并同时运行它们。

    至于您对地点的担忧 Blazemeter 也有地理分布的压力测试

    【讨论】:

      【解决方案3】:

      你可以看看Tsung工具http://tsung.erlang-projects.org/ 它真的很轻,可以在普通机器上运行数十万虚拟用户(取决于你的脚本难度)。

      【讨论】:

        【解决方案4】:

        虽然您无法在这些站点上执行多步骤自动化,但以下服务可让您从不同的客户端位置(例如亚洲、北美、澳大利亚)访问一个网址,并根据您的需要限制带宽以进行测试:

        WebPageTest - https://www.webpagetest.org/ - 来自他们的 about 页面:“WebPagetest 是一个开源项目,主要由 Google 开发和支持,作为我们努力提高网络速度的一部分。”这个站点也有一个 api,是开源的,并允许您通过节点 api 和 cli 自动化它。

        Pingdom https://tools.pingdom.com/

        更多信息this blogpost from KeyCDN

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-30
          • 2018-03-23
          • 2015-08-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多