我有一个能够同时处理数百万用户请求的系统。为了检查系统如何处理负载,我设置了一组JMeter服务器(从属服务器)和一个控制器(客户端)。
我有一个包含所有用户的数据库(~10M),我需要发送的每个请求来自不同的用户。
我想知道如何在JMeter中实现这样的功能。基本上,我考虑过为每个从站划分一系列用户(比如100,000),然后在给定的从站内,每个请求应从本地100,000列表中读取一个新用户,然后将其删除。因此,我最终将向每个用户发送请求。
事实上,这个想法在理论上听起来是合乎逻辑的,但我并不完全知道如何使用JMeter术语来实现它。此外,我不确定如何在测试中从数据库中读取,虽然理论上我可以事先将其读入文本文件,并让每个从属文件包含其100,000个用户部分的文本文件。
我可以设置一个非常大的机器集群,因此这里的规模不会成为问题。只是如何设置它。
答案 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)
可以通过执行以下步骤来实现:
通过执行上述步骤,Jmeter控制器将通过指向所有Jmeter Slave节点以在同一位置使用CSV文件来开始执行测试" C:\ Loadtest \"。 但这里的诀窍是所有机器都将使用不同的用户组。
希望这会有所帮助。