无法将参数传递给使用 Maven 和 linux 的分布式 JMeter 设置的从站

Cannot pass parameters to slaves with distributed JMeter setup with Maven and linux

在所有服务器中使用 JMeter 2.13、Maven 和 Linux。不是 运行 来自 gui 或命令行的任何测试,使用 Maven!

有一个测试计划,其中包含许多参数,这些参数在 Jenkins 中设置并从 Maven 执行传递到 JMeter 测试计划。在 Maven 中使用“-J”来设置输入参数。 在单个 JMeter 环境中工作正常。

如果我先在从机中手动启动 JMeter,然后启动 Jenkins 作业,则指定远程服务器中的测试计划会正常启动。但我观察到没有参数传输到远程服务器。所以,我无法控制测试计划的执行。 临时解决方法是在测试计划中硬编码一些参数。 但这是不可接受的解决方案!

我环顾四周。已找到这些页面, and this

但我 运行 来自 Maven,而不是命令行,所以“-G”不起作用!

尚未进行任何 RMI 设置,但我认为这不是问题所在。 可能与如何将参数传输到远程服务器有关。

使用 pom.xml 中的此设置,

<propertiesJMeter>
    <remote_hosts>10.71.98.54,10.71.98.82,10.71.98.81</remote_hosts>
</propertiesJMeter>

我确实设法使基本的从属连接正常工作;我在 output/log 中看到远程服务器 IP 地址的打印输出,测试计划已启动并运行良好,日志似乎也正常。 但是,问题是参数没有传输到远程服务器!!

一些额外的 pom 配置:

<configuration>
    <remoteConfig>
        <startServersBeforeTests>true</startServersBeforeTests>
        <stopServersAfterTests>true</stopServersAfterTests>
    </remoteConfig>
    <propertiesUser>
        <THROUGHPUT>${throughput}</THROUGHPUT>
        <NUMBER_OF_LOOPS>${number_of_loops}</NUMBER_OF_LOOPS>
        <DURATION>${duration}</DURATION>
        <NUMBER_OF_CLIENTS>${number_of_clients}</NUMBER_OF_CLIENTS>                
    </propertiesUser>

...

拜托,有人可以帮忙吗?

根据 documentation:

Adding Additional Properties To propertiesGlobal


Global properties are properties that are sent to the remote machines. To set those properties you will need to specify each property in your pom.xml in the config element propertiesGlobal (The example below shows a property called threads and a property called testIterations being set).

<project>
    [...]
        <build>
            <plugins>
                <plugin>
                    <groupId>com.lazerycode.jmeter</groupId>
                    <artifactId>jmeter-maven-plugin</artifactId>
                    <version>2.0.3</version>
                    <executions>
                        <execution>
                            <id>jmeter-tests</id>
                            <goals>
                                <goal>jmeter</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <propertiesGlobal>
                            <threads>10</threads>
                            <testIterations>5</testIterations>
                        </propertiesGlobal>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    [...]
</project>

所以看起来您需要将这些属性从 <propertiesUser>

移动到 <propertiesGlobal>

参考文献:

非常感谢。我认为您的第一个文档 link 指向了错误的页面。 不管怎样,我猜你指的是,https://github.com/jmeter-maven-plugin/jmeter-maven-plugin/wiki/Modifying-Properties#6

很奇怪,从 "JMeter dist" 指南中很难找到。

非常感谢。 :-) 参数现在可以正常工作了。

但是 remoteConfig 参数不起作用。 Jmeter remote connection throwing "Connection refused to host" https://github.com/jmeter-maven-plugin/jmeter-maven-plugin/wiki/Remote-Server-Configuration

但是有人可以确认上面第一个link的结论是正确的吗?

当我阅读第二个信息时 link 我确实理解了它,因为 JMeter 不必启动。但是必须启动 "jmeter-server" ,否则它不会工作,对吗? 猜猜现在是有道理的。