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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top