当我们在多个远程主机上运行 JMX 文件时,我们需要将所有参数文件复制到所有主机,在这种情况下,参数文件将不存在唯一性,因为参数文件将在所有主机中可用,并将在本地获取。
我需要在 Jmeter 分布式测试中使用与 Loadrunner 功能相同的唯一每次迭代。
当我们在多个远程主机上运行 JMX 文件时,我们需要将所有参数文件复制到所有主机,在这种情况下,参数文件将不存在唯一性,因为参数文件将在所有主机中可用,并将在本地获取。
我需要在 Jmeter 分布式测试中使用与 Loadrunner 功能相同的唯一每次迭代。
考虑使用HTTP 简单表服务器。
它可用于在一台主机上设置一个小型 HTTP 服务器,为您选择的 CSV 文件提供服务:
然后您可以发出READ命令并将KEEP
参数设置为FALSE
:
http://hostname:port/sts/READ?READ_MODE=RANDOM&KEEP=FALSE&FILENAME=your_file.csv
这样您就可以保证测试数据的“唯一性”,因为它只会被读取一次。
您可以使用JMeter Plugins Manager安装 HTTP Simple Table Server :
从外部源(队列)提供参数。在测试之前预加载队列值。由于每个值都“弹出”一次,这保证了负载生成器、不同脚本定义的唯一性,即使您有多个驱动负载的工具也是如此。
您可以考虑使用 Amazon AWS 简单队列服务 (SQS)。对于性能测试所需的数据量而言,价格低得离谱,而且接口是用于推送和弹出值的 HTTP,这是对现有 HTTP 脚本的极好补充。
将您的 CSV 拆分为负载生成器主机的数量
$ wc -l "youroriginalcsv.csv" /* 这将返回 csv 中的总行数*/
$ split -l "count of above query"/"number of hosts" "youroriginalcsv.csv" /* 这将分割 CSV,文件名为 xaa, xab ... */
将每个唯一的 CSV 传输到所有可用的主机
$ scp xaa host1_user@host1_ip:/csvpath/csvfile.csv
$ scp xab host2_user@host2_ip:/csvpath/csvfile.csv
.
$ scp xaz hostN_user@hostN_ip:/csvpath/csvfile.csv
/* 在你的测试脚本中使用这个路径 */
干杯!