使用分布式JMeter服务器分割工作负载而不是镜像

时间:2015-09-28 22:08:47

标签: jmeter

JMeter的默认行为似乎只是跨服务器复制您的测试计划。因此,如果测试计划有10个"线程",则对X服务器运行它将产生10x线程。

有没有办法让这更聪明?例如,也许我只想要运行一些HTTP线程的副本,即使我有5台服务器来分配更强的负载。

另一个例子......我想确保我的采样器为每个线程使用唯一的ID,但我的服务要求预先配置用户名,这样他们就无法预先设置...我没有'能够找到一种直接的方法来协调我的分布式服务器(无状态)。

A"简单"实现可能是JMeter已经分发了内置的测试感知变量,因此客户端向服务器发送了类似 ServerID ServerCount 的内容,以便测试计划可以使用数字serverId作为前缀或由服务器计数mod。或者,JMeter可以选择shard thread_num,这样如果你说10,000个线程并拥有10个服务器,它将在每个服务器上运行1,000个线程,thread_num永远不会在给定采样器的分布式测试中重复(例如,如果thread_num则跳过thread_num) %serverCount!= serverId)。

有关实现这一目标的最佳方法的任何想法吗?

1 个答案:

答案 0 :(得分:0)

分布式测试感知变量的一种方法是使用不同的变量值启动每个jmeter-server:

bin/jmeter-server -Jvariable=valuehost1

然后在您的测试脚本中使用:

${__P(variable)}