RMI macht Anwendung langsam?

Status
Nicht offen für weitere Antworten.

K-Man

Bekanntes Mitglied
Hallo
Ich habe folgendes Problem. Eine fertige Anwendung soll netzwerkfähig gemacht werden. Doch seit RMI ist die Anwendung deutlich langsamer geworden. Es geht dabei nicht um die Datenübertragung übers Netz, sondern die Anwendung selber. Ich erzeuge eigentlich nur ein einziges Remoteobjekt, welches aber nicht mal benutzt wird. Trotzdem ist die Anwendung sehr langsam geworden. Kann es ein, dass RMI eine Anwendung bremst?

Hier die Methode, die den Server erzeugt:
Code:
public void setUp(String remoteNaming)
{
try
{
	LocateRegistry.createRegistry(Registry.REGISTRY_PORT);
}
catch (RemoteException e1)
{
	e1.printStackTrace();
}
if (System.getSecurityManager() == null)
{
	System.out.println("No security manager found. Initialise new one...");
	URL policyFile = ClassLoader.getSystemResource("xxx/java.policy");
	System.setProperty("java.security.policy", policyFile.toString());
	System.setSecurityManager(new RMISecurityManager());
}
try
{
	Server server = new ServerImpl();
	UnicastRemoteObject.exportObject(server);
	Naming.rebind(remoteNaming, server);
	System.out.println("Server bound");
}
catch (Exception e)
{
	System.err.println("Server exception: " + e.getMessage());
	e.printStackTrace();
}
}
Funktioniert auch alles...ich kann auch auf Methoden der Remote-Objekte zugreifen.

In der Anwendung wird der Server so erzeugt:
Code:
new Setup().setUp(SERVER_NAME);

Nur alleine durch den Aufruf der Setup-Methode wird die komplette Anwendung extrem langsam. Erzeugen der Registry, zugreifen auf entfernte Objekte, alles funktioniert einwandfrei. Aber auch ohne irgendwelche Zugriffe ist die Anwendung deutlich langsamer geworden...Hoffentlich kann mir jemand helfen. Liegt es an RMI? Ist RMI überhaupt empfehlenswert, oder sollte RMI eigentlich eine Anwendung nicht verlangsamen?
 

K-Man

Bekanntes Mitglied
Also ich hab zumindest schon herausgefunden, dass die Anwendung nur langsam ist, wenn der Server local erzeugt wird.
Ist der Server auf einem anderen Rechner, dann läuft alles wie gewohnt. Ist der Server aber local auf dem selben Rechner, dann ist die Performance deutlich langsamer..
 
G

Guest

Gast
Auf dem anderen Rechner ist der Server auch lokal. Es ist nur eine Frage
des Standpunkts. :wink:
 

K-Man

Bekanntes Mitglied
Schon klar. Trotzdem ist es komisch.
Wenn ich den Server auf einem entfernten Rechner starte und ich mich mit der Anwendung an den Server verbinden, dann geht eigentlich alles ohne Probleme. Sobald ich aber einen Server auf den Computer erstelle, auf dem auch die Anwendung läuft, dann ist die Performance der Anwendung sehr schlecht...
 

André B.

Bekanntes Mitglied
Ist das denn schlimm? Soll den die Anwendung eine Netzwerkverbindung von localhost zu localhost herstellen? ???:L
 
G

Guest

Gast
Welches Betriebssystem? Es klingt als wäre der Loopbackadapter die Spassbremse.
Wie wird der Hostname aufgelöst? Ist es auch dann langsam, wenn der PC nicht
online ist? Irgendeine paranoide Firewall drauf?
Starte den Server mit dem Parameter

-Djava.rmi.server.logCalls=true

Tauchen da andere Adressen als 127.0.0.1 auf?
Es kann zig Ursachen haben. Normal ist es nicht, wenn auch "langsam" ein subjektiver
Eindruck ist.
 

K-Man

Bekanntes Mitglied
Also log sieht so aus:

13.12.2005 09:23:40 sun.rmi.server.UnicastServerRef logCall
FEINER: RMI TCP Connection(1)-10.1.150.21: [10.1.150.21: sun.rmi.registry.RegistryImpl[0:0:0, 0]: void rebind(java.lang.String, java.rmi.Remote)]
13.12.2005 09:23:41 sun.rmi.server.UnicastServerRef logCall
FEINER: RMI TCP Connection(2)-10.1.150.21: [10.1.150.21: sun.rmi.transport.DGCImpl[0:0:0, 2]: java.rmi.dgc.Lease dirty(java.rmi.server.ObjID[], long, java.rmi.dgc.Lease)]
13.12.2005 09:23:41 sun.rmi.server.UnicastServerRef logCall
FEINER: RMI TCP Connection(3)-127.0.0.1: [127.0.0.1: sun.rmi.registry.RegistryImpl[0:0:0, 0]: java.rmi.Remote lookup(java.lang.String)]

10.1.150.21 bin ich selber, Firewall ist nur die von WindowsXP oben, aber Java ist "freigeschaltet".
Langsam ist es nur, wenn der Server auf 127.0.0.1 erzeugt wird. Wird kein Server verwendet oder ist der Server auf einem anderen Rechner im Netz, dann gehts ohne Probleme...(ach ja. Mit langsam ist hier sehr viel langsamer gemeint)
 

Murray

Top Contributor
Wenn es an der Namensauflösung liegt, müsste ping 127.0.0.1 auch entsprechend langsam sein. Hast Du das mal probiert?
 

K-Man

Bekanntes Mitglied
Ping ist normal. Bin dem Problem aber etwas näher gekommen. Es liegt wohl am SecurityManager. Sobald ich den ausschalte, dann gehts auf einmal wieder. Mit SecurityManager gehts zwar ohne Probleme, aber nicht, wenn der Server local ist. Schalte ich den aus, dann gehts auch mit lokalen Server schneller. Permission wurden zum Testen auf AllPermission gesetzt. Aber warum bremst der SecurityManager einen lokalen Server aus?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Was macht WebEndPoint ? Netzwerkprogrammierung 2
windl URLConnection unter 1.7 macht Probleme Netzwerkprogrammierung 14
M Was macht Thread, wenn er aus einem "leeren" Inputstream liest ? Netzwerkprogrammierung 5
reibi Proxy macht Problem abeim URL-Aufruf Netzwerkprogrammierung 3
D EA-Exception Network Adapter macht probleme Netzwerkprogrammierung 2
N Java-Chat (lauffähig) macht Probleme auf der Konsole Netzwerkprogrammierung 6
A Socket-Anwendung (BufferedWriter/Reader liest nicht aktuellen Wert) Netzwerkprogrammierung 6
R Anfängerbeispiel: Suche Java-Anwendung die http-Anfragen in Tomcat liest Netzwerkprogrammierung 8
L Webbasierte Anwendung - Authentifizierung über LDAP/ActiveDirectory Netzwerkprogrammierung 5
B Webview für Anwendung Netzwerkprogrammierung 7
agent47 HTTP Grundstzfrage verteilte Anwendung Netzwerkprogrammierung 20
C Mini Client-Server-Anwendung funktioniert nicht Netzwerkprogrammierung 8
S HTTP Würdet Ihr Euch bei einer intern genutzten Anwendung auf Cookies verlassen? Netzwerkprogrammierung 2
gamebreiti Socket Server / Client Anwendung Manipulation von Objekten durch Server Netzwerkprogrammierung 9
F Server Client Anwendung mit UDP Netzwerkprogrammierung 2
P Kritische Java-Anwendung und Citrix veröffentlichen Netzwerkprogrammierung 1
V erste Client - Server Anwendung, paar Fragen wie Socketverbindung checken usw. Netzwerkprogrammierung 4
S Client Anwendung mit zentraler SQL-Datenbank Netzwerkprogrammierung 3
C GWTEventService kleine Anwendung Netzwerkprogrammierung 1
T Peer-to-Peer Anwendung Netzwerkprogrammierung 2
D RMI Problem beim shutdown von verteilter CORBA-Anwendung Netzwerkprogrammierung 6
P Java Web = Webside Anwendung Netzwerkprogrammierung 2
Ollek Socket Sucher passende Server/Client Lösung für meine Anwendung Netzwerkprogrammierung 2
S Socket Einfache Client/Server-Anwendung Netzwerkprogrammierung 11
Y einfache TCP/IP Anwendung Netzwerkprogrammierung 4
J Nachricht kommt erst nach beendigung der Anwendung an Netzwerkprogrammierung 4
K Mobile online Anwendung - Java mit SAP Netzwerkprogrammierung 2
W Server-Client Anwendung Netzwerkprogrammierung 2
E Erste Server-Client Anwendung Netzwerkprogrammierung 2
J Anwendung friert bei .listNames() ein! Netzwerkprogrammierung 11
P Proxy für Anwendung setzten Netzwerkprogrammierung 3
B Server / Client Anwendung, Client GUI Probleme Netzwerkprogrammierung 11
J Mit Java Anwendung ein (externes) Programm auf einem AIX Rechner starten Netzwerkprogrammierung 6
P Mp3s Streamen - Client-Server-Anwendung Netzwerkprogrammierung 17
D Javascript Funktion aus Java Anwendung ausführen Netzwerkprogrammierung 5
M Verteilte Anwendung - welche Technik? Netzwerkprogrammierung 31
I RMI Anwendung mit Zugriffsschutz versehen Netzwerkprogrammierung 8
A Verständnisproblem mit Client/Server-Anwendung Netzwerkprogrammierung 20
S Server - Client Anwendung Netzwerkprogrammierung 3
G Performance einer verteilten RMI-Anwendung Netzwerkprogrammierung 4
R proxy für java anwendung angeben [resolved] Netzwerkprogrammierung 15
Thalion TCP Connection zu langsam Netzwerkprogrammierung 2
P Socket Socket-Verbindung Input sehr langsam Netzwerkprogrammierung 1
V Socket UDP Server/Client Kommunikation sehr langsam Netzwerkprogrammierung 2
A UDP verlorene Pakete/ socket.receive zu langsam Netzwerkprogrammierung 27
S StringArray in .txt Datei --> langsam wegen Client/Server!? Netzwerkprogrammierung 16
J HTMLUnit arbeit sehr langsam . Alternative? Netzwerkprogrammierung 6
S TCP/IP-Kommunikation ist zu langsam Netzwerkprogrammierung 13
A Warum ist das Java "Select" so langsam? Netzwerkprogrammierung 13
C NetScanner arbeitet trotz Threads langsam Netzwerkprogrammierung 6
A Socketverbindungsaufbau langsam Netzwerkprogrammierung 25

Ähnliche Java Themen

Neue Themen


Oben