Question

Quel problème peut causer kill -9 en application de production (sous Linux pour être exact)?

Je demande que faire un travail périodique, l'arrêt de ces prend beaucoup de temps, et je ne se soucient pas si certains emplois seront avortés - le travail peut être terminé par de nouveaux procédés. Donc, puis-je utiliser kill -9 juste pour l'arrêter immédiatement ou cela peut causer des problèmes graves OS?

Par exemple, Unicorn , utilise comme procédure normale de travail:

Lorsque votre application va mal tourné, un BOFH peut juste « kill -9 » le processus de travail en fuite sans se soucier de déchirer tous les clients vers le bas, juste un.

Mais cette article demandes :

Le -9 (ou KILL) argument pour tuer (1) ne doit jamais être utilisé sur les systèmes Unix

PS: Je comprends que kill -9 ne peut pas être pris en charge par l'application, mais je sais que pour l'application mai il ne marche pas posé de problème, je viens interesses peut-il causer des problèmes au niveau OS? shared memory segments active, lingering sockets semble dangereux pour moi.

Était-ce utile?

La solution

Cela dépend de ce type d'application, il est.

Quelque chose comme une base de données peut données perdiez (si elle n'écrit pas toutes ses données à un journal de transactions persistante à la fois), ou prendre plus de temps pour démarrer la prochaine fois, ou les deux.

Bien que Crash-seulement un bon principe , peu d'applications sont conformes actuellement à elle .

Par exemple, la base de données MySQL est pas « crash seulement » et le tuer avec un kill -9 entraînera dans le temps soit nettement plus démarrage (d'un arrêt propre), la perte de données, ou les deux, en fonction des paramètres (et dans une certaine mesure, la chance).

Par contre, Cassandra encourage effectivement l'utilisation de kill -9 comme un mécanisme d'arrêt; il ne supporte rien d'autre.

Autres conseils

kill -9 ne donne pas une application une chance d'arrêter proprement.

Normalement, une application peut attraper un SIGINT/SIGTERM et fermer proprement (fermer les fichiers, sauvegarde des données, etc.). Une application ne peut pas attraper un SIGKILL (ce qui se produit avec un kill -9) et il ne peut pas faire tout cela (en option) le nettoyage.

Une meilleure approche consiste à utiliser un kill standard, et si l'application ne répond toujours pas, puis utilisez kill -9.

kill -9 ne causera pas de « sérieux problèmes de système d'exploitation ». Mais le processus s'arrête immédiatement, ce qui signifie qu'il pourrait laisser des données dans un état bizarre.

Le signal KILL ne peut pas être pris par l'application. Si l'application est en train d'écrire une structure de données complexes sur le disque lorsque vous tuez, la structure peut être seulement à moitié écrit, ce qui dans un fichier de données corrompues. il est généralement préférable de mettre en œuvre un autre signal tel que USER1 que le signal « stop », car cela peut être pris et permet à l'application de fermer de manière contrôlée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top