Frage

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

Ich habe Anwendung, die periodische Arbeit leisten, diese dauert lange Zeit, und es ist mir egal, ob einige Jobs abgebrochen werden - die Arbeit kann durch neue Prozesse abgeschlossen werden. Kann ich also verwenden kill -9 Nur um es sofort zu stoppen, oder dies kann schwerwiegende OS -Probleme verursachen?

Zum Beispiel, Einhorn, verwendet es als normales Arbeitsverfahren:

Wenn Ihre Bewerbung schief geht, kann ein BofH den außer Kontrolle geratenen Arbeitsprozess nur "töten", ohne sich Sorgen zu machen, alle Kunden niederzureißen, nur einen.

Aber dieses Artikel Ansprüche:

Das Argument -9 (oder Kill) zum Töten (1) sollte niemals auf UNIX -Systemen verwendet werden

PS: Das verstehe ich kill -9 Kann nicht mit dem Antrag behandelt werden, aber ich weiß, dass es für die Mai -Anwendung keine Probleme verursacht. Ich habe es nur eingefasst. Kann es einige Probleme auf Betriebssystemniveau verursachen? shared memory segments active, lingering sockets Klingt für mich gefährlich.

War es hilfreich?

Lösung

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

So etwas wie eine Datenbank kann entweder Daten verlieren (wenn nicht alle Daten gleichzeitig an ein persistierendes Transaktionsprotokoll geschrieben werden) oder das nächste Mal länger dauert, oder beides.

Obwohl Nur Crash ist ein gutes Prinzip, nur wenige Anwendungen entsprechen ihm.

Zum Beispiel ist die MySQL -Datenbank nicht "nur" zum Absturz ", und das Töten mit einem Kill -9 führt zu einer deutlich längeren Startzeit (als einem sauberen Abschaltungsstillstand), Datenverlust oder beides, abhängig von den Einstellungen (und zu einem gewissen Grad , Glück).

Auf der anderen Seite, Kassandra Fördert tatsächlich die Verwendung von Kill -9 als Abschaltmechanismus; Es unterstützt nichts anderes.

Andere Tipps

kill -9 Gibt einer Anwendung keine Möglichkeit, sauber abzuschalten.

Normalerweise kann eine Anwendung a fangen SIGINT/SIGTERM und sauber herunterfahren (Dateien schließen, Daten speichern usw.). Eine Anwendung kann keine fangen SIGKILL (was mit a vorkommt kill -9) Und so kann es nichts von dieser (optionalen) Reinigung machen.

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

kill -9 wird keine "schwerwiegenden OS -Probleme" verursachen. Der Prozess hört jedoch sofort auf, was bedeutet, dass die Daten in einem ungeraden Zustand hinterlassen können.

Das Kill -Signal kann nicht von der Anwendung erfasst werden. Wenn sich die Anwendung in der Mitte des Schreibens einer komplexen Datenstruktur auf die Festplatte befindet, wenn Sie sie abtöten, kann die Struktur nur halb geschrieben sein, was zu einer beschädigten Datendatei führt. In der Regel ist es am besten, ein anderes Signal wie User1 als "Stopp" -Signal zu implementieren, da dies gefangen werden kann und die Anwendung ermöglicht, kontrolliert zu werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top