2016-04-25 58 views
1

我在新的JMeter,我嘗試運行使用這個工具用一個配置分佈式測試:的JMeter遠程測試:.RemoteJMeterEngineImpl_Stub(無安全管理器:RMI類加載器禁用)

  1. 客戶端(主) - Windows 7的
    • Java版本 - 1.8.0_92(7u79太試過)
    • JMeter的版本 - 2.13
  2. 服務器(從) - VM Ubuntu的14(與全光照摹的VirtualBox)
    • java的版本 - 1.7.0_95
    • 的JMeter版本 - 2.8.20130705

我已經做了,並試圖一切,我在官方教程和其他職位中,包括stackoverflow的帖子,但任何成功的結果。 我得到下一個錯誤的時候,當我嘗試通過客戶端上運行服務器測試:

java.rmi.UnmarshalException:錯誤和解組返回;嵌套的例外是: 拋出java.lang.ClassNotFoundException:org.apache.jmeter.engine.RemoteJMeterEngineImpl_Stub(無安全管理器:RMI類加載器禁用)

我在不同的組合已經試過:

    在Ubuntu和Windows
  • 禁用防火牆使用同一子網
  • 設置主機名JMeter的服務器文件:

    RMI_HOST_DEF = -Djava.rmi.server.hostname = 172.29.148.49

  • 與授予在JMeter的/ bin目錄下的所有權限創建.java.policy中的文件:

    授予{ 許可java.security。的AllPermission; };

  • 設置在JMeter的服務器文件:

    -Djava.security.policy =文件:/usr/share/jmeter/bin/.java.policy

  • 將所有權限java.policy文件(usr/lib中/ JVM/Java的7-的OpenJDK,AMD64/JRE/lib/security中/ java.policy中)

在結果,當我在VM Ubuntu的啓動JMeter的服務器,它似乎一切都很好。我得到:

log_file=jmeter-server.log java.io.FileNotFoundException: jmeter-server.log  (Permission denied) 
[log_file-> System.out] 
2016/04/25 17:13:52 INFO - jmeter.util.JMeterUtils: Setting Locale to en_US 
2016/04/25 17:13:52 INFO - jmeter.JMeter: Loading user properties from: /usr/share/jmeter/bin/user.properties 
2016/04/25 17:13:52 INFO - jmeter.JMeter: Loading system properties from: /usr/share/jmeter/bin/system.properties 
2016/04/25 17:13:52 INFO - jmeter.JMeter: Setting System property: java.net.preferIPv4Stack=true 
2016/04/25 17:13:52 INFO - jmeter.JMeter: Setting System property: java.rmi.server.hostname=172.29.148.49 
2016/04/25 17:13:52 INFO - jmeter.JMeter: Setting System property: server_port=1099 
2016/04/25 17:13:52 INFO - jmeter.JMeter: Copyright (c) 1998-2012 The Apache Software Foundation 
2016/04/25 17:13:52 INFO - jmeter.JMeter: Version 2.8.20130705 
2016/04/25 17:13:52 INFO - jmeter.JMeter: java.version=1.7.0_95 
2016/04/25 17:13:52 INFO - jmeter.JMeter: java.vm.name=OpenJDK 64-Bit Server VM 
2016/04/25 17:13:52 INFO - jmeter.JMeter: os.name=Linux 
2016/04/25 17:13:52 INFO - jmeter.JMeter: os.arch=amd64 
2016/04/25 17:13:52 INFO - jmeter.JMeter: os.version=4.2.0-35-generic 
2016/04/25 17:13:52 INFO - jmeter.JMeter: file.encoding=UTF-8 
2016/04/25 17:13:52 INFO - jmeter.JMeter: Default Locale=English (United States) 
2016/04/25 17:13:52 INFO - jmeter.JMeter: JMeter Locale=English (United States) 
2016/04/25 17:13:52 INFO - jmeter.JMeter: JMeterHome=/usr/share/jmeter 
2016/04/25 17:13:52 INFO - jmeter.JMeter: user.dir =/usr/share/jmeter/bin 
2016/04/25 17:13:52 INFO - jmeter.JMeter: PWD  =/usr/share/jmeter/bin 
2016/04/25 17:13:52 INFO - jmeter.JMeter: IP: 127.0.1.1 Name: ubuntu FullName: ubuntu 
Created remote object: UnicastServerRef [liveRef: [endpoint:[172.29.148.49:45755](local),objID:[-1533104d:1544dc4ef79:-7fff, 2602978299635569139]]] 
2016/04/25 17:13:52 INFO - jmeter.engine.RemoteJMeterEngineImpl: Starting backing engine on 1099 
2016/04/25 17:13:52 INFO - jmeter.engine.RemoteJMeterEngineImpl: IP address=172.29.148.49 
2016/04/25 17:13:52 INFO - jmeter.engine.RemoteJMeterEngineImpl: IP address is a site-local address; this may cause problems with remote access. 
    Can be overridden by defining the system property 'java.rmi.server.hostname' - see jmeter-server script file 
2016/04/25 17:13:52 INFO - jmeter.engine.RemoteJMeterEngineImpl: Creating RMI registry (server.rmi.create=true) 
2016/04/25 17:13:52 INFO - jmeter.engine.RemoteJMeterEngineImpl: Bound to registry on port 1099 

但是當我tryting從對Windows客戶端(主站)運行的JMeter,不管GUI或以非GUI模式,我得到下一個錯誤日誌跟蹤:

2016/04/25 13:15:58 INFO - jmeter.engine.DistributedRunner: Configuring remote engine: 172.29.148.49:1099 
2016/04/25 13:15:58 ERROR - jmeter.engine.DistributedRunner: Failed to create engine at 172.29.148.49:1099 java.rmi.UnmarshalException: error unmarshalling return; nested exception is: 
java.lang.ClassNotFoundException: org.apache.jmeter.engine.RemoteJMeterEngineImpl_Stub (no security manager: RMI class loader disabled) 
    at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source) 
    at java.rmi.Naming.lookup(Unknown Source) 
    at org.apache.jmeter.engine.ClientJMeterEngine.getEngine(ClientJMeterEngine.java:54) 
    at org.apache.jmeter.engine.ClientJMeterEngine.<init>(ClientJMeterEngine.java:67) 
    at org.apache.jmeter.engine.DistributedRunner.createEngine(DistributedRunner.java:237) 
    at org.apache.jmeter.engine.DistributedRunner.getClientEngine(DistributedRunner.java:213) 
    at org.apache.jmeter.engine.DistributedRunner.init(DistributedRunner.java:91) 
    at org.apache.jmeter.gui.action.RemoteStart.doAction(RemoteStart.java:81) 
    at org.apache.jmeter.gui.action.ActionRouter.performAction(ActionRouter.java:81) 
    at org.apache.jmeter.gui.action.ActionRouter.access$000(ActionRouter.java:40) 
    at org.apache.jmeter.gui.action.ActionRouter$1.run(ActionRouter.java:63) 
    at java.awt.event.InvocationEvent.dispatch(Unknown Source) 
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
    at java.awt.EventQueue.access$500(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) 
    at java.awt.EventQueue.dispatchEvent(Unknown Source) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.run(Unknown Source) 
Caused by: java.lang.ClassNotFoundException: org.apache.jmeter.engine.RemoteJMeterEngineImpl_Stub (no security manager: RMI class loader disabled) 
    at sun.rmi.server.LoaderHandler.loadClass(Unknown Source) 
    at sun.rmi.server.LoaderHandler.loadClass(Unknown Source) 
    at java.rmi.server.RMIClassLoader$2.loadClass(Unknown Source) 
    at java.rmi.server.RMIClassLoader.loadClass(Unknown Source) 
    at sun.rmi.server.MarshalInputStream.resolveClass(Unknown Source) 
    at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source) 
    at java.io.ObjectInputStream.readClassDesc(Unknown Source) 
    at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) 
    at Java. I. ObjectInputStream. readObject0 (Unknown Source) 
    at java.io.ObjectInputStream.readObject(Unknown Source) 
    ... 25 more 

任何人都可以幫助解決此問題。

非常感謝。

回答

0

我在不同的組合已經試過:

    在Ubuntu和Windows
  • 禁用防火牆

無關

  • 使用同一子網

無關。

  • 在JMeter的服務器文件中設置主機名:
RMI_HOST_DEF=-Djava.rmi.server.hostname=172.29.148.49 

無關。

  • 與授予在JMeter的/ bin目錄下的所有權限創建.java.policy中的文件:
grant { permission java.security.AllPermission; }; 

無關。

  • 設置在JMeter的服務器文件:
-Djava.security.policy=file:/usr/share/jmeter/bin/.java.policy 

無關。

  • 設置在java.policy文件

不相關的所有權限(usr/lib中/ JVM/JAVA -7-的openjdk-AMD64/JRE/LIB /安全/的java.policy) 。

你的行爲是令人困惑的。防火牆和子網,主機名也不是。政策文件,其名稱及其內容與ClassNotFoundExceptions無關,無論是單獨還是任意組合,並且爲什麼有​​人可能會認爲另有其他方式,特別是與安全策略操作有關的問題,當錯誤消息明確註明時安全管理器是而不是已安裝。

ClassNotFoundException的解決方案是給部署有關的類,到有關的JVM關聯的在這種情況下,客戶端。 Jmeter在某些JAR文件中提供此類,並且它在客戶端的CLASSPATH上是必需的。

+0

謝謝。我已經嘗試了您的解決方案以及任何結果。我在Java和Jmeter方面不太好,也許這是一個原因。 我的解決方案是:在客戶端和服務器上使用相同的Jmeter版本。由於默認的Ubuntu Jmeter版本是2.8,我也在客戶端上使用它。它的工作原理。 謝謝! –