kill -9 e l'applicazione di produzione
-
24-10-2019 - |
Domanda
Quali problemi può causare kill -9
in applicazione di produzione (in linux per l'esattezza)?
Ho applicazione che fare un po 'di lavoro periodico, fermandosi questi richiede molto tempo, e non mi importa se saranno interrotti alcuni posti di lavoro - il lavoro può essere rifinito dai nuovi processi. Così posso usare kill -9
solo per fermarlo immediatamente o questo può causare gravi problemi di OS?
Per esempio, Unicorn , l'utilizza come normale procedura di lavoro:
Quando l'applicazione va a monte, un BOFH può solo "kill -9" il processo di lavoro in fuga, senza preoccuparsi di strappare tutti i clienti verso il basso, una sola.
articolo :
Il -9 (o uccidere) argomento di kill (1) non deve mai essere utilizzato su sistemi Unix
PS: capisco che kill -9
non può essere gestito mediante l'applicazione, ma so che per l'applicazione maggio esso non causa alcun problema, ho solo intrested Può causare alcuni problemi a livello di sistema operativo? shared memory segments active, lingering sockets
suoni pericoloso per me.
Soluzione
Dipende che tipo di applicazione è.
Qualcosa di simile a un database può dati o perda (se non scrivere tutti i suoi dati in un log delle transazioni persistente in una sola volta), o prendere più tempo per iniziare la prossima volta, o entrambi.
Anche se Crash-only è un principio buono, pochi applicazione attualmente conformi ad esso .
Ad esempio, il database MySQL non è "solo crash" e uccidendo con un kill -9 si traduca in significativamente più lungo tempo di avvio (di un arresto pulito), la perdita di dati, o di entrambi, a seconda delle impostazioni (e in una certa misura, la fortuna).
D'altra parte, Cassandra effettivamente incoraggia l'uso di kill -9 come meccanismo di arresto; supporta nient'altro.
Altri suggerimenti
kill -9
non dà un'applicazione la possibilità di chiudere in modo pulito.
Normalmente un'applicazione può prendere un SIGINT/SIGTERM
e spegnere in modo pulito (chiudere i file, salvare dati, ecc). Un'applicazione non può prendere un SIGKILL
(che si verifica con una kill -9
) e quindi non può fare nulla di tutto questo pulizia (opzionale).
Un approccio migliore è quello di utilizzare un kill
normale, e se l'applicazione continua a non rispondere, quindi utilizzare kill -9
.
kill -9
non causerà alcun "seri problemi del sistema operativo". Ma il processo si fermerà immediatamente, il che significa che potrebbe lasciare i dati in uno stato strano.
Il segnale KILL non può essere catturato con l'applicazione. Se l'applicazione è nel mezzo di scrivere una struttura dati complessa su disco quando si uccide, la struttura può essere solo a metà scritto, risultando in un file di dati danneggiati. è generalmente migliore per attuare qualche altro segnale come USER1 come il segnale di "stop", in quanto questo può essere catturato e consente all'applicazione di arrestare in modo controllato.