Linux: Port "Bereinigen" wie?

4 Antworten

ein Listenport braucht manchmal einfach ein paar Sekunden, bis er frei ist. Ein Neustart ist nicht notwendig, einfach nur kurz ein bischen warten.

Hallo gumpo03,

muss ich den screen mit "kill" beenden. Dann wird aber der port nicht bereinigt

Normalerweise sollte der Kill-Befehl die abhängigen Applikationen ebenfalls beenden, probiere doch mal die Option -9 mit kill. Alternativ kannst Du natürlich auch einfach das Netzwerk restarten:

/etc/init.d/networking restart

Aber ganz ehrlich, das ist nicht der richtige Weg, Du solltest lieber herausfinden warum es zu diesen Hängern oder Abstürzen kommt und diesen Umstand beseitigen.

Nicht die Auswirkung sondern die Ursache muss abgeschafft werden!!

lieben Gruß aus Zuahus


gumpo03 
Beitragsersteller
 14.12.2011, 15:36

Das das Programm ab und zu hängenbleibt, liegt daran, das es von der Minecraft Server Software (Bukkit) noch keine Offizielles Release-Packet gibt. Bis jezt gibt es nur ein offizielles für eine ältere Minecraft-Client version und eine art Beta der Serversoftware. Da ich auf die neue Version nicht verzichten möchte, benutze ich diese Beta. Die ist allerdings noch nicht ganz ausgereift und führt daher wohl zu gelegentlichen aufhängern der Software.

PS: Thx für die Antword, werd ich mal ausprobieren ^^

0

Derartige Effekte können auch bei anderen Servern auftreten, wenn auch recht selten. Die Ursache liegt meisst im Programmcode der Serveranwendung selbst, ( woran der Benutzer unwahrscheinlich selbst was ändern kann ) oder anhängiger Bibliotheken. Die offenen Ports kann man an einem Terminal mit:

netstat -l -p (-n)

( Das -n ist optional und zeigt die verwendeten Ports nur als Zahl an ) auflisten lassen. Die Anzeige erfolgt 7 - spaltig, Proto( tcp udp ipx ), Recv-Q ( Empfangswarteschlange ), Send-Q ( Sendewarteschlange ), Local Address ( lokale IP-Adresse : Port ), Foreign Address ( Quelladresse bei lokalen Prozessen immer 0.0.0.0 : Port ), State ( Zustand / Eigenschaft der Verbindung, listen = lauschen = geöffneter Port ), PID Program Name ( PID des Prozesses, der den Socket geöffnet hat, Name des Prozesses )

Mit diesen Infos kann man versuchen den hängenden Prozess zu beenden ( kill PID ). Die Liste ist der Spiegel der lokalen Netzwerkinterfaces und wird vom Scheduler des Kernels aktualisiert. Achte bei netstat -l -p auf Recv-Q und Send-Q. Wenn nichts los ist, sollten diese Werte 0 sein, zumindest niedrig und sich ständig ändern. Steht da eine Zahl und ändert sich nichts, hilft nur noch ein Neustart. denn die Serveranwendung hat den Netzwerkadapter durch einen Pufferüberlauf, Pagefehler o.A. abgeschossen, zumindest die Verbindung für diesen Socket. Bleibt der Prozess trotz kill im Speicher und der Port geöffnet, hilft wirklich nichts anderes,als ein kompletter Neustart des Servers. So etwas darf eigentlich nicht passieren und deutet auf eine fehlerhafte Anwendung oder fehlerhafte Systemumgebung hin. Wenn andere dieses Problem nicht haben, kann es nur die Systemumgebung oder auch ein Hardwarefehler sein. Wurde der Speicher schon getestet ? Ein geringfügiger Speicherfehler oder auch eine knappe Größe kann sich genau so auswirken ! Läuft ansonsten das System stabil ? Oft deckt ein Blick in die Syslogs ( /var/log/syslog , /var/log/messages ) solche Fehler auf...

Man kann eine Port nicht "bereinigen" Entweder belegt ein Programm den Port oder nicht. Wenn der Port nicht frei ist, dann läuft wohl noch irgend ein Programm was zu dem Minecraft Server gehört und den Port belegt.

Schau mal hier http://mrfoo.de/archiv/621-Welches-Programm-nutzt-einen-bestimmten-Port.html Da steht, wie du herausfindest, welches Programm einen bestimmten Port belegt.


guenterhalt  14.12.2011, 13:47

ist leider nicht ganz richtig. Offensichtlich wird bei einer Belegung eines Ports eine Liste angelegt, die beim Killen des betreffenden Prozesses nicht bereinigt wird. Auch bei einem exit , ohne dass der Server-Port mit close geschlossen wurde, bleibt der Port belegt (/usr/bin/socklist zeigt auch noch den Port und die pid des gekillten Prozesses) Es scheint aber irgendjemand in bestimmten Zeitabständen eine Prüfung vorzunehmen und die Liste zu bereinigen.

Wer das macht und wie man das beschleunigen könnte, habe ich noch nicht herausbekommen. Die Zeit liegt aber unter 30 Sekunden.

0