Netzwerkprogrammierung: Broken Pipe

Blandorin

Mitglied
Hallo,
ich habe ein Problem, welches mich an den Rand der Verzweifelung bringt.

Ich habe ein Server-Programm in Java, welches mit Flash-Clienten in Verbindung steht. Das Programm läuft tagelang super, dann - ohne einen mir ersichtlichen Grund - hängt es sich auf.
Das Problem tritt auf, wenn der Server einem Client Daten sendet:

java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(Unknown Source)
at java.net.SocketOutputStream.write(Unknown Source)
at sun.nio.cs.StreamEncoder$CharsetSE.writeBytes(Unknown Source)
at sun.nio.cs.StreamEncoder$CharsetSE.implFlushBuffer(Unknown Source)
at sun.nio.cs.StreamEncoder$CharsetSE.implFlush(Unknown Source)
at sun.nio.cs.StreamEncoder.flush(Unknown Source)
at java.io.OutputStreamWriter.flush(Unknown Source)
at java.io.BufferedWriter.flush(Unknown Source)
at spieler.send(spieler.java:345)
at game.sendeAnAlle(game.java:1308)

Diese Exception wird erst ausgegeben, nachdem das Programm schon mehrere Minuten (die Zeit scheint variable zu sein?) "aufgehängt" ist.

Einige Ursachen kann ich ausschließen:
- die verschickten Daten wurden zuvor schon an mehrere Clients gesendet - ohne Probleme
- Dem entsprechenden Client wurden erst wenige Sekunden zuvor andere Daten geschickt - ohne Problem

Ich weiß nicht mehr, woran es liegen kann. Ich kann den Fehler nicht reproduzieren... und das ganze tritt meist erst nach mehreren Stunden/Tagen Laufzeit auf.
Was mich auch verunsichert ist, dass die obige Exception erst ausgegeben wird, wenn das Programm schon lange Zeit "hing"...

Ich hoffe mir kann jemand weiterhelfen.. mir fällt nichts mehr ein :confused:

Vielen Dank im Vorraus,
Blandorin
 
Hallo!
Das ganze läuft auf einem Linux Server mit Debian 3.1 Distribution.

Bei meiner Suche habe ich verschiedene ähnliche Fälle gefunden:

http://forum.java.sun.com/thread.jspa?threadID=736391&tstart=105
http://www.velocityreviews.com/forums/t147965-deadlock-thread-dump-included.html

Here's a deadlock that our chat server gets into every now and then.
There's no fixed time. Sometimes it runs with 50-60 users for 6 hours
and sometimes it crashes in 2 hours.

Ein Deadlock ist es meiner Ansicht nach nicht. Aber der Fehler ist ansonsten identisch.

Inzwischen habe ich den Buffered Writer rausgenommen und es läuft direkt über den OutputStream. Da es 3,4 Tage ohne Probleme lief, war ich ziemlich zuversichtlich, dass dort der Fehler lag. Allerdings kamen die Fehler inzwischen doch wieder..

Gruß Blandorin
 
Ich bin in letzter Zeit auch mit dieser Fehlermeldung in berührung gekommen. Und zwar bei dem Programm JUpload womit ein Kunde teilweise große Dateien auf einen FTP-Server lädt. Ich hab unter Windows ein großes File (60 MB) problemlos hochgeladen, aber der Kunde auf seinem Mac bekamm nach wenigen MB diese Fehlermeldung BrokenPipe.

Google verreit mir, dass es etwas mit der Arbeitsspeicher-Vergabe zu tun haben kann. Also dass dem Safari od. der JVM zu wenig Arbeitsspeicher zugesichert wurde. Mehr kann ich aber nicht dazu sagen, es wurde nie getestet.
 
Zurück