Jmeter分布式安装程序在GUI中工作,但不在命令行中工作

Jmeter分布式安装程序在GUI中工作,但不在命令行中工作,jmeter,rmi,load-testing,jmeter-4.0,Jmeter,Rmi,Load Testing,Jmeter 4.0,我在所有5台机器上运行Windows7Pro和JMeter4.0R1823414,所有机器上都运行JavaJDK1.8.0収144。所有机器上的所有路径和环境变量都是相同的。我在主机中设置了远程主机,并且可以在主机内部的GUI上看到它们。我在一台从机上构建了rmi_keystore.jks,并将其复制到每台机器的bin文件夹中。我成功地启动了从机上的所有服务器,并看到运行jmeter-server.bat的rmi的成功连接: Found ApacheJMeter_core.jar Picked

我在所有5台机器上运行Windows7Pro和JMeter4.0R1823414,所有机器上都运行JavaJDK1.8.0収144。所有机器上的所有路径和环境变量都是相同的。我在主机中设置了远程主机,并且可以在主机内部的GUI上看到它们。我在一台从机上构建了rmi_keystore.jks,并将其复制到每台机器的bin文件夹中。我成功地启动了从机上的所有服务器,并看到运行jmeter-server.bat的rmi的成功连接:

Found ApacheJMeter_core.jar
Picked up JAVA_TOOL_OPTIONS: -agentlib:jvmhook
Picked up _JAVA_OPTIONS: -Xbootclasspath/a:"C:\Program Files 
(x86)\HP\Unified Functional Testing\bin\java_shared\classes\jasmine.jar"
Created remote object: UnicastServerRef2 [liveRef: [endpoint: 
[<ip:port>,SSLRMIServerSocketFactory(host=<host_name/IP>, 
keyStoreLocation=rmi_keystore.jks, type=JKS, 
trustStoreLocation=rmi_keystore.jks, type=JKS, alias=rmi),
SSLRMIClientSocketFactory(keyStoreLocation=rmi_keystore.jks, type=JKS, 
trustStoreLocation=rmi_keystore.jks, type=JKS, alias=rmi)](local),objID: 
[<stuff>:-7fff, <more_stuff>]]]
运行一个基本的HTTP调用,我能够从主控机单独运行到所有4台从机,并且一次全部运行,并且从GUI获得结果而不会出现问题。我的问题来自命令行。我无法运行测试。我试过:

jmeter -n -t distributed_test_4_slaves.jmx -r -l distributedLog_Test.jtl -Jserver.rmi.ssl.keystore.file=rmi_keystore.jks

jmeter -n -t distributed_test_4_slaves.jmx -r -l distributedLog_Test.jtl

jmeter -n -t distributed_test_4_slaves.jmx -R <all_my machine_names> -l distributedLog_Test.jtl (with and without -Jserver.rmi.ssl.keystore.file=rmi_keystore.jks)

jmeter -n -t distributed_test_4_slaves.jmx -R <all_my machine_names:ports> -l distributedLog_Test.jtl (with and without -Jserver.rmi.ssl.keystore.file=rmi_keystore.jks)

jmeter -n -t distributed_test_4_slaves.jmx -R <all_my machine_ips(with and without ports)> -l distributedLog_Test.jtl (with and without -Jserver.rmi.ssl.keystore.file=rmi_keystore.jks)
每次在命令行中出现相同的错误时:

Creating summariser <summary>
Created the tree successfully using distributed_test_4_slaves.jmx
#The next 5 lines repeat for each slave
Configuring remote engine: <slave_1..4>
Exception creating connection to: <slave_1..4>; nested exception is:
    java.io.FileNotFoundException: rmi_keystore.jks (The system cannot 
find the file specified)
Failed to configure <slave_1..4>
Stopping remote engines
Remote engines have been stopped
Error in NonGUIDriver java.lang.RuntimeException: Following remote 
engines could not be configured:[
<slave_1>, <slave_2>, <slave_3>, <slave_4>]
我错过了什么?为什么它要在GUI中运行和工作,而不是在命令行上?有些事情不可能是对的。

确保

您可以从其bin文件夹运行JMeter 或者将rmi_keystore.jks放在运行JMeter的文件夹中 因为错误清楚地表明JMeter尝试加载rmi_keystore.jks文件,但失败了

要尝试的另一件事是通过server.rmi.ssl.keystore.file属性提供rmi_keystore.jks文件的完整路径

您还可以通过将属性设置为true来完全禁用安全RMI通信


通常情况下,jmeter.log文件应该包含问题的根本原因,如果它不是或不是非常有用的,您可以为所选的类或包提供信息

我仍然不确定它为什么会工作,但只有在从jmeter-bin目录中运行测试时,它才会工作。我试图从命令行在属性文件中设置rmi文件的完整路径,但它仍然会抱怨在从机上找不到rmi。如果我从主服务器上的bin目录运行,并完全限定所有其他路径jmx、资源文件等。然后它运行。必须有一个配置块或一些可以理解这一点的东西,但现在这是可行的。谢谢你,德米特里