Performance 在同一主机上运行多个jmeter服务器

Performance 在同一主机上运行多个jmeter服务器,performance,jmeter,jmeter-4.0,Performance,Jmeter,Jmeter 4.0,我想以分布式方式运行JMeter。我的要求是,在我的从机上应该运行多个jmeter服务器进程。为此,我运行了以下命令 ./jmeter-server -Djava.rmi.server.hostname=XX.XX.X.XXX -Dserver.rmi.localport=60001 ./jmeter-server -Djava.rmi.server.hostname=XX.XX.X.XXX -Dserver.rmi.localport=60001 每次运行此命令时,我都会在控制台上看到下面

我想以分布式方式运行JMeter。我的要求是,在我的从机上应该运行多个jmeter服务器进程。为此,我运行了以下命令

./jmeter-server -Djava.rmi.server.hostname=XX.XX.X.XXX -Dserver.rmi.localport=60001

./jmeter-server -Djava.rmi.server.hostname=XX.XX.X.XXX -Dserver.rmi.localport=60001
每次运行此命令时,我都会在控制台上看到下面的消息。端口60002也有相同的错误

Created remote object: UnicastServerRef2 [liveRef: [endpoint:[XX.XX.X.XXX:60001](local),objID:[-823e97d:171c37a0bf7:-7fff, -7549432026360676360]]]


Created remote object: UnicastServerRef2 [liveRef: [endpoint:[XX.XX.X.XXX:60002](local),objID:[7b7158d6:171c37bd76f:-7fff, 2942891814894680180]]]
在主机上,远程服务器配置为XX.XX.X.XXX:60001和XX.XX.X.XXX:60002。但每次我运行测试时,我都会发现以下错误

2020-04-29 01:26:03,052 ERROR o.a.j.e.DistributedRunner: Failed to create engine at XX.XX.X.XXX:60001
java.rmi.NoSuchObjectException: no such object in table
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:283) ~[?:1.8.0_212]
    at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:260) ~[?:1.8.0_212]
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:375) ~[?:1.8.0_212]
    at sun.rmi.registry.RegistryImpl_Stub.lookup(RegistryImpl_Stub.java:119) ~[?:1.8.0_212]
    at org.apache.jmeter.engine.ClientJMeterEngine.getEngine(ClientJMeterEngine.java:70) ~[ApacheJMeter_core.jar:4.0 r1823414]
    at org.apache.jmeter.engine.ClientJMeterEngine.<init>(ClientJMeterEngine.java:83) ~[ApacheJMeter_core.jar:4.0 r1823414]
    at org.apache.jmeter.engine.DistributedRunner.createEngine(DistributedRunner.java:237) ~[ApacheJMeter_core.jar:4.0 r1823414]
    at org.apache.jmeter.engine.DistributedRunner.getClientEngine(DistributedRunner.java:213) [ApacheJMeter_core.jar:4.0 r1823414]
    at org.apache.jmeter.engine.DistributedRunner.init(DistributedRunner.java:93) [ApacheJMeter_core.jar:4.0 r1823414]
    at org.apache.jmeter.JMeter.runNonGui(JMeter.java:1011) [ApacheJMeter_core.jar:4.0 r1823414]
    at org.apache.jmeter.JMeter.startNonGui(JMeter.java:915) [ApacheJMeter_core.jar:4.0 r1823414]
    at org.apache.jmeter.JMeter.start(JMeter.java:543) [ApacheJMeter_core.jar:4.0 r1823414]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_212]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_212]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_212]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_212]
    at org.apache.jmeter.NewDriver.main(NewDriver.java:245) [ApacheJMeter.jar:4.0 r1823414]
2020-04-29 01:26:03,056 ERROR o.a.j.u.JMeterUtils: no such object in table
2020-04-29 01:26:03,056 INFO o.a.j.e.DistributedRunner: Failed to configure XX.XX.X.XXX:60001
2020-04-29 01:26:03,056 INFO o.a.j.e.DistributedRunner: Stopping remote engines
2020-04-29 01:26:03,056 INFO o.a.j.e.DistributedRunner: Remote engines have been stopped
2020-04-29 01:26:03,056 ERROR o.a.j.JMeter: Error in NonGUIDriver
java.lang.RuntimeException: Following remote engines could not be configured:[XX.XX.X.XXX:60001]
    at org.apache.jmeter.engine.DistributedRunner.init(DistributedRunner.java:112) ~[ApacheJMeter_core.jar:4.0 r1823414]
    at org.apache.jmeter.JMeter.runNonGui(JMeter.java:1011) [ApacheJMeter_core.jar:4.0 r1823414]
    at org.apache.jmeter.JMeter.startNonGui(JMeter.java:915) [ApacheJMeter_core.jar:4.0 r1823414]
    at org.apache.jmeter.JMeter.start(JMeter.java:543) [ApacheJMeter_core.jar:4.0 r1823414]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_212]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_212]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_212]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_212]
    at org.apache.jmeter.NewDriver.main(NewDriver.java:245) [ApacheJMeter.jar:4.0 r1823414]
2020-04-29 01:26:03052错误o.a.j.e.DistributedRunner:未能在XX.XX.X.XXX:60001创建引擎
java.rmi.NoSuchObjectException:表中没有此类对象
在sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:283)~[?:1.8.0\u 212]
在sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:260)~[?:1.8.0212]
在sun.rmi.server.UnicastRef.invoke(UnicastRef.java:375)~[?:1.8.0212]
在sun.rmi.registry.RegistryImpl_Stub.lookup(RegistryImpl_Stub.java:119)~[?:1.8.0_212]
在org.apache.jmeter.engine.ClientJMeterEngine.getEngine(ClientJMeterEngine.java:70)~[ApacheJMeter\u core.jar:4.0 r1823414]
在org.apache.jmeter.engine.ClientJMeterEngine.(ClientJMeterEngine.java:83)~[ApacheJMeter\u core.jar:4.0 r1823414]
在org.apache.jmeter.engine.DistributedRunner.createEngine(DistributedRunner.java:237)~[ApacheJMeter\u core.jar:4.0 r1823414]
在org.apache.jmeter.engine.DistributedRunner.getClientEngine(DistributedRunner.java:213)[ApacheJMeter\u core.jar:4.0 r1823414]
位于org.apache.jmeter.engine.DistributedRunner.init(DistributedRunner.java:93)[ApacheJMeter_core.jar:4.0 r1823414]
在org.apache.jmeter.jmeter.runNonGui(jmeter.java:1011)[ApacheJMeter_core.jar:4.0 r1823414]
在org.apache.jmeter.jmeter.startNonGui(jmeter.java:915)[ApacheJMeter_core.jar:4.0 r1823414]
在org.apache.jmeter.jmeter.start(jmeter.java:543)[ApacheJMeter_core.jar:4.0 r1823414]
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)~[?:1.8.0_212]
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)~[?:1.8.0212]
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)~[?:1.8.0212]
在java.lang.reflect.Method.invoke(Method.java:498)~[?:1.8.0_212]
位于org.apache.jmeter.NewDriver.main(NewDriver.java:245)[ApacheJMeter.jar:4.0 r1823414]
2020-04-29 01:26:03056错误o.a.j.u.j度量:表中没有此类对象
2020-04-29 01:26:03056信息o.a.j.e.DistributedRunner:未能配置XX.XX.X.XXX:60001
2020-04-29 01:26:03056信息o.a.j.e.分布式发动机:停止远程发动机
2020-04-29 01:26:03056信息o.a.j.e.分布式发动机:远程发动机已停止
2020-04-29 01:26:03056错误o.a.j.JMeter:非UIDriver中的错误
java.lang.RuntimeException:无法配置以下远程引擎:[XX.XX.X.XXX:60001]
在org.apache.jmeter.engine.DistributedRunner.init(DistributedRunner.java:112)~[ApacheJMeter\u core.jar:4.0 r1823414]
在org.apache.jmeter.jmeter.runNonGui(jmeter.java:1011)[ApacheJMeter_core.jar:4.0 r1823414]
在org.apache.jmeter.jmeter.startNonGui(jmeter.java:915)[ApacheJMeter_core.jar:4.0 r1823414]
在org.apache.jmeter.jmeter.start(jmeter.java:543)[ApacheJMeter_core.jar:4.0 r1823414]
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)~[?:1.8.0_212]
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)~[?:1.8.0212]
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)~[?:1.8.0212]
在java.lang.reflect.Method.invoke(Method.java:498)~[?:1.8.0_212]
位于org.apache.jmeter.NewDriver.main(NewDriver.java:245)[ApacheJMeter.jar:4.0 r1823414]
我已经检查过了,端口1099、60001和60002对所有TCP和UDP通信都是开放的

有人能帮忙吗?

以这种方式运行服务器:

jmeter -Dserver_port=60001 -s -j jmeter-server1.log -Djava.rmi.server.hostname=XX.XX.X.XXX


jmeter -Dserver_port=60002 -s -j jmeter-server1.log -Djava.rmi.server.hostname=XX.XX.X.XXX
jmeter -R -Jremote_hosts=XX.XX.X.XXX:60001,XX.XX.X.XXX:60002 -n -t Testplan.jmx -l results.csv -e -o reportfolder
然后,这样做:

jmeter -Dserver_port=60001 -s -j jmeter-server1.log -Djava.rmi.server.hostname=XX.XX.X.XXX


jmeter -Dserver_port=60002 -s -j jmeter-server1.log -Djava.rmi.server.hostname=XX.XX.X.XXX
jmeter -R -Jremote_hosts=XX.XX.X.XXX:60001,XX.XX.X.XXX:60002 -n -t Testplan.jmx -l results.csv -e -o reportfolder
阅读本文了解更多细节

如果您希望正确学习jmeter,这将对您有所帮助

  • 您使用了错误的属性,需要修改
    server.rmi.port
  • 您需要为不同的客户端引擎使用不同的端口,即:

    • 启动从机1:

      jmeter-server -Djava.rmi.server.hostname=127.0.0.1 -Dserver.rmi.port=60001
      
    • 启动从机2:

      jmeter-server -Djava.rmi.server.hostname=127.0.0.1 -Dserver.rmi.port=60002
      
    • 启动主机:

      jmeter -Jremote_hosts=127.0.0.1:60001,127.0.0.1:60002 -r -n -t test.jmx -l result.jtl
      
    127.0.0.1
    替换为具有从属实例的计算机的IP地址(如果它与主实例不同)

  • 您的“需求”毫无意义,因为在同一台机器上有2个JMeter从属实例比有1个实例的性能更差

  • 请考虑升级到 更多信息: