Insurgency Dedicated Server – crash_handler Prozess blockiert Port

Der Insurgency Dedicated Server für Linux hat seit einiger Zeit ein Stabilitäts-Problem. Wenn der Server crashed – was ja durchaus häufiger vorkommt – wird ein Crash-Dump für die Entwickler geschrieben. In diesem Fall wird der crash_handler-Prozess gestartet, der diesen dann an die Entwickler sendet. In der Prozessliste tauchen dann diese Prozesse auf:

[root@mineralwasser ~]# ps auxw | grep newworld
insurge+ 16353 100 0.0 21428 4612 pts/2 Rl+ 2016 4339:54 ./crash_handler 16350 http://crash.newworldinteractive.com/api/dumps/submit/insurgency 1 22907 -1
insurge+ 31057 100 0.0 21428 4540 pts/2 Rl+ 14:59 10:39 ./crash_handler 31054 http://crash.newworldinteractive.com/api/dumps/submit/insurgency 1 22907 -1
insurge+ 32614 100 0.0 21428 4776 pts/2 Rl+ 2016 3838:20 ./crash_handler 32611 http://crash.newworldinteractive.com/api/dumps/submit/insurgency 1 22907 -1

Es ist zwar cool, dass es so etwas gibt, jedoch hat dieser Prozess drei große Probleme. Der Prozess

  1. läuft endlos
  2. belegt permanent einen CPU Kern zu 100%
  3. verhindert das der Port des Gameservers freigegeben wird. Wenn der Server dann neu starten will, dann kann er auf diesen nicht binden. Daraufhin wird so lange hochgezählt, bis ein freier Port gefunden wurde. Das Resultat für die Spieler: Der Server verschwindet aus der Favoritenleiste, da der Server auf Port 27016 und nicht auf 27015 läuft.

Ich habe dazu ein Ticket bei New World Interactive eröffnet. Dort wurde mir sehr schnell gesagt, dass das Problem bekannt ist. Nun ja ich warte nun schon etwas länger darauf, deswegen habe ich einen Workaround gefunden. In die Crontab des UNIX-Gameserveraccounts einfach folgenden Eintrag hinzufügen:

# Kill the insurgency crash_handler process
*/1 * * * * /usr/bin/pkill crash_handler

Das funktioniert, da der Server dem crash_handler Prozess ein bisschen Zeit gibt, bevor der Server neustartet. Gerade genug, damit der Cronjob aktiv werden kann.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.