Netzwerkprobleme bei mehreren Clients

Status
Nicht offen für weitere Antworten.

dweiner

Mitglied
Hallo,

ich habe mir über Sockets, Streams etc. (TCP/IP) ein Netzwerk aufgebaut. Über dieses Netzwerk soll ein Experiment laufen, welches ca. 1 Stunde dauert. Ich habe das Programm bei mir auf dem Rechner mehrfach getestet (also Clients und Server auf localhost) - da lief alles reibungslos. Wenn mein Programm allerdings auf verschiedenen Rechnern abgespielt wird (z.B. Netzwerk mit 8 Clientrechnern), dann schmiert mein Programm irgendwann immer ab (also es werden z.B. beim Client irgendwelche Dinge angezeigt, die zu diesem Zeitpunkt gar nicht angezeigt werden sollen oder ein Client hängt sich auf und nix geht mehr). Auffällig ist, dass mein Programm immer zu unregelmäßigen Zeitpunkten ins Stocken gerät, so dass es schwierig ist einen Fehler im Programmcode zu lokalisieren. Mein Programm ist eigentlich auch relativ simpel aufgebaut: Die Clients schicken zu bestimmten Zeiten Nachrichten an den Server und dieser speichert die Daten in eine Datenbank ab. Also rein von der Logik in meinem Programm kann eigentlich nicht viel falsch sein (auf localhost funktioniert ja auch alles).
Was ist denn wahrscheinlicher: Fehler oder schlechte Performance/Programmierstil in meinem Programmcode als Ursache des Übels oder ist es einfach generell schwierig ein Netzwerk mit 8 Clients reibungslos zu koordinieren? Ich habe auch das Gefühl, dass die Wahrscheinlichkeit eines Absturzes eklatant steigt je mehr Clients angebunden sind und je mehr Daten hin-und hergeschickt werden. Habt ihr schon derartige Erfahrungen gemacht? Gibt es irgendwelche Geheimtipps (z.B. zur Verbesserung des Programmcodes) um die Performance der Netzwerkkommunikation zu verbessern?

Bitte um eure Einschätzungen dazu und zahlreiche Rückantworten!

Danke im voraus!


Gruß
Dominik
 
T

tuxedo

Gast
Weißt du was mich ärgert?

Dass man den Leuten immer alles aus der Nase ziehen muss ;-)

Wenn irgendwas abstürzt, dann kommt eine Exception. Das ist nix magisches, unerklärliches und auch nix "von der dunklen Seite der Macht". Nein, das ist in den meisten Fällen das Ding, das dich zum Fehler und damit auch zur Lösung bringt.

Wenn die Anwendung stillschweigend stirbt, dann hast du entweder in diversen catch-Blöcken keinen Stacktrace ausgebenen und auch nicht geloggt, oder die JVM ist auf der nativen Seite abgeraucht. Aber dann hast du ein "hs_err-irgendwas" Log im Arbeitsverzeichnis der Anwendung liegen.

Letzteres ist aber sehr selten wenn man nicht gerade mit JNI Dingen rumspielt.

Wenn sich die Anwendung aufhängt, also nicht gleich terminiert, dann hast du vermutlich eien Deadlock gebastelt. Da kommt man mit "jconsole" oder allgemein mit Profilern dahinter wo der Hund begraben ist.

- Alex
 

FArt

Top Contributor
Die Wahrscheinlichkeit ist hoch, dass es sich um Programmierfehler handelt.

Die Wahrscheinlichkeit ist auch hoch, dass es um Synchronisationsprobleme geht, möglich ist auch der unsaubere Umgang mit Ressourcen (z.B. Sockets).

Was hilft:
* mit Verstand den Code anschauen, besonders die Stellen wo konkurrierene Zugriffe zu erwaten sind
* sinnvolles Logging einbauen und die Logfiles auswerten
 

dweiner

Mitglied
Danke schon mal für diese ersten Einschätzungen! Sinnvolles Logging würde in diesem Fall z.B. bedeuten den Befehl "synchronized" an heiklen Stellen einzubauen, oder?

Gruß
Dominik
 
T

tuxedo

Gast
Logging hat nix mit "synchronized" zu tun. Wozu gibts Log4J und Java.util.logging ?!

Unbedachter einsatz von "synchronized" schadet mehr als dass es hilft: Codeteile werden unnötig oder fälschlicherweise so blockiert, dass andere Codeteile warten müssen bis sie zugriff haben.

Wie FArt schon schrieb:

- Anständigen Logoutput produzieren
- Diesen analysieren
- ggf. Profiler oder JConsole verwenden um Deadlocks aufzuspüren

gruß
Alex
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Netzwerkprobleme Client-Server Netzwerkprogrammierung 5
F Schulprojekt erweitern - Online Quiz mit mehreren Clients - Was benötige ich ? Netzwerkprogrammierung 0
Messoras Socket Chatserver mit mehreren OutputStreams Netzwerkprogrammierung 2
T Verbindungsversuche über TCP Sockets von mehreren Threads führt zu Serverabsturz Netzwerkprogrammierung 2
D Probleme bei mehreren Clients uns Senden von Messages Netzwerkprogrammierung 16
F Peer to Peer Verbindung zwischen mehreren Clients? Netzwerkprogrammierung 8
A Server mit mehreren Clients Netzwerkprogrammierung 2
B Rmi Kommunikation Server zu mehreren Clients? Netzwerkprogrammierung 3
T Chat mit mehreren Clients Netzwerkprogrammierung 3
A Geöffnete ObjectStreams aus mehreren Methoden nutzen Netzwerkprogrammierung 4
R Problem mit mehreren Anfragen auf demselben Port Netzwerkprogrammierung 2
T RMI mit mehreren Servern? Netzwerkprogrammierung 3
J Kommunikation zw. Server und mehreren Clints haut nicht hin Netzwerkprogrammierung 2
L Logingeschützte Website mit mehreren Accs auslesen Netzwerkprogrammierung 3
D Kommunikation zwischen mehreren Servlets??? Netzwerkprogrammierung 3
P Zeit zwischen mehreren Client log-ins bestimmen. Netzwerkprogrammierung 2
S Server mit mehreren Clients Nachrichten austauschen Netzwerkprogrammierung 6
M Socket Senden an alle verbundenen Clients Netzwerkprogrammierung 3
M Socket Netzwerk Übertragung zwischen 4 Clients Netzwerkprogrammierung 2
G Gui von 2 Clients Synchronisieren Netzwerkprogrammierung 2
P Socket Viele Clients bedienen mit Vert.x Netzwerkprogrammierung 9
Aruetiise Socket Mehrere Clients Netzwerkprogrammierung 4
J Framework mehrere Clients/ Server-Broadcast/oracle XE/ XML Netzwerkprogrammierung 1
V Server / mehrere Clients / MySQL / Konzept Netzwerkprogrammierung 2
M MultiClient Server - Senden an alle Clients Netzwerkprogrammierung 8
G Multiple Clients and one Server --> java.lang.NullPointerException Netzwerkprogrammierung 1
M Teilnehmerliste vom Server auch an alle Clients senden Netzwerkprogrammierung 0
Luk10 Server / Client: Clients speichern! Netzwerkprogrammierung 6
Z Socket [Chatprogramm] Mehrere Clients an einen Server Netzwerkprogrammierung 10
C Socket Identifikation des clients nach der accept() Methode Netzwerkprogrammierung 2
D Mehrere Clients über Java-Sockets Netzwerkprogrammierung 13
cedi Socket Mehrere Clients an einem Server Netzwerkprogrammierung 4
A Socket Server: Message an verschiedene Clients senden Netzwerkprogrammierung 4
B Socket Liste von clients - multicast Netzwerkprogrammierung 4
M Anzahl Clients aus Start- und Endadr. berechnen Netzwerkprogrammierung 54
R Viele Clients ein Server Netzwerkprogrammierung 8
borobudur Synchronisation von Clients Netzwerkprogrammierung 10
S Socket nach anderen clients im netzwerk suchen Netzwerkprogrammierung 3
L Socket Chat Server für mehrere Clients Netzwerkprogrammierung 7
L RMI Informationen über die Clients herausfinden Netzwerkprogrammierung 5
H Neues NIO problem nachricht an alle clients Netzwerkprogrammierung 3
P Socket Datei von Client zum Server übertragen --> Weiterleitung an Clients Netzwerkprogrammierung 16
F Erhalten und Senden von Nachrichten anhand des Indexes des Clients Netzwerkprogrammierung 19
H Hilfe bei multiplen Clients Netzwerkprogrammierung 7
cowabunga1984 Transferierte Datenmenge eines SOAP Clients (JAX-WS) anzeigen Netzwerkprogrammierung 2
T Administration von Software auf Clients im Netzwerk Netzwerkprogrammierung 6
D Clients sollen mehrere Sessions starten Netzwerkprogrammierung 11
G Nachricht an mehrere Clients schicken Netzwerkprogrammierung 10
5 Webservice max. mit 5 Clients möglich Netzwerkprogrammierung 10
M clients untereinander kommunizieren Netzwerkprogrammierung 2
A RMI: Wieviele Clients können sich gleichzeitig anmelden? Netzwerkprogrammierung 34
T Am RMI-Server: IP des Clients ermitteln? Netzwerkprogrammierung 2
J SecurityManager - Server-Zugriff nur von bestimmten Clients? Netzwerkprogrammierung 2
T RMI - Probleme beim Starten des Clients Netzwerkprogrammierung 4
G Anzahl verbundener Clients zu einem FTP-Server ermitteln? Netzwerkprogrammierung 4
G Server an mehrere Clients Netzwerkprogrammierung 15
D Netzwerk Betrachtung mit vielen Clients Netzwerkprogrammierung 2
G Nachricht von server an alle clients senden Netzwerkprogrammierung 6
I IP Adresse des Clients einer Socket Verbindung Netzwerkprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben