Hi again,
I've managed to solve the problem: it was indeed an errornous hosts file on the remote machine. The host file just had no entry for the external IP but instead assigned the 127.0.0.1 IP to the hostname.
This leaves room for speculation why the client tries to talk to the 127.0.0.1 IP - to my mind this IP must be coming from the remote machine although that wouldn't make sense.
After fixing the hosts file, I received a java.rmi.MarshalException. Fortunatly, that problem was already discussed on this list and the solution for me was to ensure that both systems use exactly the same JARs.
I've put up the HostInfo-Javatool under the following address: http://metrixon.de/files/HostInfo.java (and for convenience: http://metrixon.de/files/HostInfo.class)
The class will print out the hostname and IP of the localhost and any other hostname specified on the command line. It will also check if there are security permissions set concerning the getLocalHost() call (while trying to solve my problem, I came across the fact that the getLocalHost() call will return the loopback IP address (127.0.0.1) in case security permissions disallow a connection).
Maybe it can be of help to anyone else.
Thanks again,
Christian
sebb wrote:
On Thu, 28 Oct 2004 01:28:35 +0200, Christian Schwanke <[EMAIL PROTECTED]> wrote:
Interesting that the server log changes on different systems. I can't say I've looked at them closely, because we never use remote mode - non-GUI (batch) is a lot more efficient.
OK, maybe I'll consider this as well - but that would be workaround not a solution ;-)
Depends - it's definitely the solution at present if you want to run
high throughput tests.
But I still don't understand why the *client* should be trying to connect to 127.0.0.1.
I think, the remote machine that is run in server mode tries to determine its own IP by calling "InetAddress.getLocalHost().getHostName()" (sorry, wrote the wrong API call in the previous mail - this code is in "RemoteJMeterEngineImpl.java", line 48). Within my test environment, the server machine receives "127.0.0.1" as result to the getHostName() call. What exactly happens behind the RMI scenes I don't know - I suppose, the server machine will propagate its own IP to the client (gui) machine. This would explain, why the client tries to connect to the 127.0.0.1-Address (The client/server-conversion could be something like this: client: "server xyz are you there ?" server: "yep, I'm here and you can reach me at 127.0.0.1". As I've said before, I don't know how RMI exactly works so this is pure speculation ;-))
I don't think that is the case. The client knows the hostname or IP of the RMI server, and connects to the RMI port on that server.
What does the client log say on the working system? What if you run the client on the working system, but fail to start the server on the other working system?
But should the server really propagate the IP, there should be a slicker way of handling the remote calls. It wouldn't make sense to tell the client the exact IP address of the remote machine, if the remote machine sends its IP in return (that's like calling someone on the phone and asking him for his/her phonenumber).
Indeed - I don't think this happens.
Maybe the idea to incorporate something like JRendezvous could be helpful here (I came across that idea reading through the wiki).
Anyway, in my case, even JRendezvous wouldn't be of much help, since the IP/DNS configration of the server machine seems to be errornous. I've written a small java class to print out the hostname and address, that the InetAddress-API will return - I think this should clear up this issue. I'll certainly consider your idea of comparing the host files to further investigate.
Regards, Christian
I tracked this down within the source files. To my mind, the call to INetAddress.getLocalHost().getHostAddress() seems to return not the external IP but the loopback IP.
Which source file is this?
I know this is somewhat of the scope of this mailing list, but maybe someone has got an idea, what may cause this behaviour. Could be the host-file on the server-machine ?
Perhaps? Can you compare them?
---------------------------------------------------------------------Anyway, thanks for your help. Regards. christian
Am 27.10.2004 um 18:38 schrieb sebb:
On Wed, 27 Oct 2004 18:07:56 +0200 (MEST), Christian Schwanke <[EMAIL PROTECTED]> wrote:
Hi, I successfully ran a testplan locally. Now I want to run the testplan on a remote machine. I followed the instructions from the manual and started the jmeter-server--Skript (which - as I understand - launches the rmiregistry).
Yes, it launches both the registry and the jmeter server
The log file on the remote machine states: 2004/10/27 18:10:27 INFO - jmeter.JMeter: Version 2.0.1 2004/10/27 18:10:27 INFO - jmeter.JMeter: java.version=1.4.2 2004/10/27 18:10:27 INFO - jmeter.engine.RemoteJMeterEngineImpl: Starting backing engine 2004/10/27 18:10:27 DEBUG - jmeter.engine.RemoteJMeterEngineImpl: This = org.apache.jmeter.engine.RemoteJMeterEngineImpl[RemoteStub [ref: [endpoint:[127.0.0.1:54315](local),objID:[0]]]]
Remark: I'm not sure wether the 127.0.0.1 is correct here ?
I then launched the JMeter-Client on my local machine specifying the remote host name of the server in the properties-file (remote_hosts-property). the GUI offers the correct hostname within the remote start-submenu. However, when commencing a remote test, the following error is logged locally:
2004/10/27 18:00:23 ERROR - jmeter.engine.ClientJMeterEngine: java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is:
This looks wrong - the client should try to connect to the remote system. Could be an error in the remote_hosts property, or perhaps a DNS resolution error.
Or did you perhaps leave in the 127.0.0.1 entry and do a remote start all?
What does jmeter.log say just before this error? It might say what host name it was trying to use.
java.net.ConnectException: Connection refused: connect at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source) at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source) at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source) at sun.rmi.server.UnicastRef.invoke(Unknown Source) at org.apache.jmeter.engine.RemoteJMeterEngineImpl_Stub.setHost(Unknown Source) at org.apache.jmeter.engine.ClientJMeterEngine.run(ClientJMeterEngine.j av a:136) at java.lang.Thread.run(Unknown Source)
I'm pretty sure that there is a simple solution to this problem, but I just can't figure it out. I don't know much about RMI, e.g. if I need to start a rmiregistry locally as well.
I don't think so.
Any advice is appreciated,
Thanks, Christian
-------------------------------------------------------------------- - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]

