2010-06-05 11 views
6

Welches Problem kann kill -9 in der Produktion Anwendung (in Linux um genau zu sein)?kill -9 und Produktionsanwendung

Ich habe Anwendung, die einige periodische Arbeit tun, das Anhalten dieser dauert lange Zeit, und es ist mir egal, wenn einige Aufträge abgebrochen werden - Arbeit kann durch neue Prozesse abgeschlossen werden. Also kann ich kill -9 nur verwenden, um es sofort zu stoppen, oder das kann schwerwiegende Betriebssystemprobleme verursachen?

Zum Beispiel Unicorn, verwendet es als normale Arbeitsweise:

Wenn Ihre Anwendung schief geht, kann ein BOFH nur „kill -9“, um den außer Kontrolle geratenen Arbeitsprozess ohne sich Gedanken über Sie alle Kunden zu reißen, nur ein.

Aber diese article Ansprüche:

Die -9 (oder KILL) Argument zu töten (1) sollten nie auf Unix-Systemen

PS verwendet werden: Ich verstehe, dass kill -9 kann nicht von der Anwendung gehandhabt werden, aber ich weiß, dass für Mai-Anwendung es keine Probleme verursacht, ich nur intrested kann es einige Probleme auf OS-Ebene verursachen? shared memory segments active, lingering sockets klingt gefährlich für mich.

+1

Im Allgemeinen ist der Ratschlag, "kill -9" niemals zu verwenden, gut - wenn Sie genug über Ihre Software wissen, um diesen Rat zu ignorieren, können Sie aufhören, sich Sorgen zu machen und alles zu erledigen, was Sie wollen. –

Antwort

1

Es hängt davon ab, welche Art von Anwendung es ist.

So etwas wie eine Datenbank kann entweder Daten verlieren (wenn sie nicht alle Daten gleichzeitig in ein persistentes Transaktionslog schreibt), oder länger dauern, um das nächste Mal zu starten oder beides.

Obwohl Crash-only ein gutes Prinzip ist, sind einige Anwendungen derzeit konform.

Zum Beispiel ist die MySQL-Datenbank nicht "nur Absturz" und das Beenden mit einem kill -9 führt je nach den Einstellungen entweder zu einer wesentlich längeren Startzeit (als ein sauberes Herunterfahren), zu Datenverlust oder zu beidem (und bis zu einem gewissen Grad, Glück).

Auf der anderen Seite ermutigt Cassandra tatsächlich die Verwendung von Kill-9 als Shutdown-Mechanismus; Es unterstützt nichts anderes.

4

kill -9 gibt einer Anwendung keine Möglichkeit, sauber herunterzufahren.

Normalerweise kann eine Anwendung eine SIGINT/SIGTERM fangen und sauber herunterfahren (Dateien schließen, Daten speichern usw.). Eine Anwendung kann keine SIGKILL (die mit einer kill -9 auftritt) abfangen, und so kann es keine dieser (optionalen) Bereinigung tun.

Ein besserer Ansatz ist die Verwendung eines Standards kill, und wenn die Anwendung nicht mehr reagiert, verwenden Sie kill -9.

0

Das KILL-Signal kann nicht von der Anwendung abgefangen werden. Wenn die Anwendung gerade dabei ist, eine komplexe Datenstruktur auf die Festplatte zu schreiben, wenn Sie sie beenden, wird die Struktur möglicherweise nur zur Hälfte geschrieben, was zu einer beschädigten Datendatei führt. Am besten ist es, ein anderes Signal wie USER1 als "Stopp" -Signal zu implementieren, da dies abgefangen werden kann und die Anwendung auf kontrollierte Weise herunterfahren kann.

2

kill -9 wird keine schwerwiegenden Betriebssystemprobleme verursachen. Aber der Prozess wird sofort gestoppt, was bedeutet, dass Daten in einem ungeraden Zustand verbleiben können.