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)。
有关实现这一目标的最佳方法的任何想法吗?
答案 0 :(得分:0)
分布式测试感知变量的一种方法是使用不同的变量值启动每个jmeter-server:
bin/jmeter-server -Jvariable=valuehost1
然后在您的测试脚本中使用:
${__P(variable)}