使用JMeter模拟数百万用户

时间:2014-06-11 17:25:32

标签: jmeter load-testing

我有一个能够同时处理数百万用户请求的系统。为了检查系统如何处理负载,我设置了一组JMeter服务器(从属服务器)和一个控制器(客户端)。

我有一个包含所有用户的数据库(~10M),我需要发送的每个请求来自不同的用户。

我想知道如何在JMeter中实现这样的功能。基本上,我考虑过为每个从站划分一系列用户(比如100,000),然后在给定的从站内,每个请求应从本地100,000列表中读取一个新用户,然后将其删除。因此,我最终将向每个用户发送请求。

事实上,这个想法在理论上听起来是合乎逻辑的,但我并不完全知道如何使用JMeter术语来实现它。此外,我不确定如何在测试中从数据库中读取,虽然理论上我可以事先将其读入文本文件,并让每个从属文件包含其100,000个用户部分的文本文件。

我可以设置一个非常大的机器集群,因此这里的规模不会成为问题。只是如何设置它。

2 个答案:

答案 0 :(得分:1)

为Jmeter提供参数列表的最佳方法是使用CSV文件: http://jmeter.apache.org/usermanual/component_reference.html#CSV_Data_Set_Config 您可以配置CSV数据集配置,以使每个线程在CSV中使用不同的行。每个引擎都需要拥有自己独特的CSV文件,因为共享模式不能在分布式测试中的引擎之间工作(你可以尝试自动化这个部分,这可能很有趣:))。

这就是你的剧本应该是这样的:
1.线程组
1.1 HTTP采样器(登录)
1.1.1 CSV数据集配置
1.2秒http采样器
等...

登录采样器将使用CSV文件中加载的参数,因此对于每次“登录”,它将使用不同的行。

分布式测试非常简单: http://jmeter.apache.org/usermanual/remote-test.html 请记住,在单个Jmeter加载引擎上运行100K并发用户将很困难(Jmeter消耗服务器上的资源,因此您将需要大量的CPU和内存)。所以你也应该监控引擎。 此外,1M用户将导致引擎将大量数据发送回控制台,因此您可能需要并行启动一堆分布式测试,最后聚合结果。

干杯,

答案 1 :(得分:0)

可以通过执行以下步骤来实现:

  • 获取用户凭据转储并将其保存到csv文件
  • 拆分csv文件。将1个文件复制到每个Jmeter从站,在所有的相同位置 例如机器" C:\负载测试\"
  • 从控制器中,在" CSV数据集配置"中提供csv文件的路径。
  • 运行测试。

通过执行上述步骤,Jmeter控制器将通过指向所有Jmeter Slave节点以在同一位置使用CSV文件来开始执行测试" C:\ Loadtest \"。 但这里的诀窍是所有机器都将使用不同的用户组。

希望这会有所帮助。