如何测试具有多达 100 万用户的 Web 服务?

How to test a web service with up to 1 million users?

我想知道如何测试具有多达 100 万活跃用户的 Web 服务,所有用户同时访问该网站。

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

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

编辑:我熟悉 JMeter 和 Selenium,但担心客户端 activity 如果来自单个位置的所有 运行 可能会受到本地网络的瓶颈,因此不是一个很好的测试?因此,与其说 10 个 JMeter 客户端位于不同位置 运行 10 万个客户端,我认为让 1000 个 JMeter 客户端每个测试 1000 个用户可能更好,所有用户都来自不同位置......但也许这不是'不太担心?

我认为在高层次上,可能会有分布在世界各地的测试节点。每个都包含验证和执行特定类型交易的逻辑。可以将测试帐户块分发到每个节点,每个节点将并行启动测试。

在实际层面上,我将从查看一个框架开始 locust.io 声称它在其标记行中这样做:)

http://locust.io/

您可以使用 apache jmeter or my personal preference siege

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

关于你关心的地点 Blazemeter 也有地理分布式压力测试

你可以看看Tsung工具http://tsung.erlang-projects.org/ 它非常轻巧,允许 运行 数十万来自普通机器的虚拟用户(取决于您的脚本难度)。

虽然您不能在这些站点上进行多步自动化,但以下服务可以让您从不同的客户端位置(例如亚洲、北美、澳大利亚)访问 url,并在以下情况下限制带宽您喜欢用于测试目的:

WebPageTest - https://www.webpagetest.org/ - 来自他们的关于页面:"WebPagetest is an open source project that is primarily being developed and supported by Google as part of our efforts to make the web faster." 该站点还有一个 api,是开源的,允许您通过节点 api 和 cli 使其自动化。

平国 https://tools.pingdom.com/

更多信息见this blogpost from KeyCDN