821 Stimmen

Was hat meinen Prozess gestoppt und warum?

Meine Anwendung läuft als Hintergrundprozess unter Linux. Sie wird derzeit über die Kommandozeile in einem Terminal-Fenster gestartet.

Kürzlich führte ein Benutzer die Anwendung eine Zeit lang aus und sie starb auf mysteriöse Weise. Der Text:

Getötet

war auf dem Terminal. Dies geschah zwei Mal. Ich fragte, ob jemand an einem anderen Terminal den Befehl kill verwendet hat, um den Prozess zu beenden? Nein.

Unter welchen Bedingungen würde Linux beschließen, meinen Prozess zu beenden? Ich glaube, die Shell hat "killed" angezeigt, weil der Prozess nach dem Empfang des kill(9)-Signals gestorben ist. Wenn Linux das kill-Signal gesendet hat, sollte dann irgendwo in einem Systemprotokoll eine Meldung erscheinen, die erklärt, warum der Prozess beendet wurde?

2voto

Lawrence Dol Punkte 61053

Wir hatten unter Linux bei einem Kunden (Red Hat, glaube ich) immer wieder Probleme mit OOMKiller (out-of-memory killer), der sowohl unsere Hauptanwendung (d.h. der Grund für die Existenz des Servers) als auch die Datenbankprozesse abschaltete.

In jedem Fall entschied OOMKiller einfach, dass die Prozesse zu viele Ressourcen verbrauchten... der Rechner war nicht einmal kurz davor, aus Mangel an Ressourcen auszufallen. Weder die Anwendung noch ihre Datenbank haben Probleme mit Speicherlecks (oder anderen Ressourcenlecks).

Ich bin kein Linux-Experte, aber ich habe den Eindruck, dass der Algorithmus, der entscheidet, wann etwas und was getötet werden soll, sehr komplex ist. Außerdem wurde mir gesagt (ich kann nicht sagen, ob das stimmt), dass OOMKiller in den Kernel integriert ist und man es nicht einfach abschalten kann.

1voto

Tom Ritter Punkte 97450

Der Benutzer hat die Möglichkeit, seine eigenen Programme mit kill oder Control+C zu beenden, aber ich habe den Eindruck, dass das nicht der Fall war und dass sich der Benutzer bei Ihnen beschwert hat.

Root hat natürlich die Fähigkeit, Programme zu killen, aber wenn jemand Root auf Ihrem Rechner hat und Dinge killen kann, haben Sie größere Probleme.

Wenn Sie nicht der Systemadministrator sind, hat der Systemadministrator möglicherweise Quoten für die CPU-, RAM- oder Festplattennutzung eingerichtet und beendet automatisch Prozesse, die diese Quoten überschreiten.

Abgesehen von diesen Vermutungen bin ich mir ohne weitere Informationen über das Programm nicht sicher.

1voto

Lejla Punkte 109

Dieses Problem wurde gelöst durch Erhöhung der Swap-Größe :

https://askubuntu.com/questions/1075505/how-do-i-increase-swapfile-in-ubuntu-18-04

0voto

poordeveloper Punkte 2216

Ich bin in letzter Zeit auf dieses Problem gestoßen. Schließlich stellte ich fest, dass meine Prozesse beendet wurden, kurz nachdem Opensuse zypper update automatisch aufgerufen wurde. Die Deaktivierung von zypper update löste mein Problem.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X