Domanda

Vorrei sapere quali sono i metodi esistono per controllare la salute di un processo. Considerando che un sistema 10000 processo sono in esecuzione e si deve fare in modo che in caso qualcuno di questi processi scende abbiamo bisogno per rendere il processo di UP.

È stato utile?

Soluzione

Con l'ID di processo (PID) e sondaggio se il processo è ancora vivo o è morto periodicamente; e se è morto, quindi rivivere.

Tuttavia, se si dispone di 10000 processo, si avrà probabilmente ha colpito limite di processo del sistema operativo prima. Suggerisco di riprogettare il programma in modo che non è necessario più di tanto i processi in primo luogo.

Altri suggerimenti

i processi che vanno verso il basso di solito è gestito da avere specifici programmi di avvio per exec () il programma e attendere un SIGCHILD per indicare il processo figlio si è conclusa nuovamente la deposizione delle uova.

Per le applicazioni di avvio di tempo (server, ecc) demoni come upstart può fare questo per voi automaticamente.

Mentre gli altri stanno sottolineando che le applicazioni già esistente (che si dovrebbe usare se non si dispone di una chiara ragione per non) mi butto fuori un'idea casuale per una soluzione personalizzata.

Se controlli tutti i processi N poi farli tutti hanno una zona di memoria condivisa bit N di grandi dimensioni (così, 10000 processi ~ 1 KB, non male). Quando si avvia ogni processo assegna un numero, i, che vanno da 0 a N. Ogni T secondi avere ogni processo imposterà bit i nella memoria condivisa a 1. Un processo di monitoraggio può verificare che tutti i bit sono 1 N ogni k*T secondi, reset tutti a 0 nel processo.

Questo è ancora O (n), che non sarà evitare, ma i primitivi sono tutti veramente veloce e dovrebbe scalare bene fino al limite filo OS.

Un'idea alternativa per ottenere i sarebbe solo per usare il PID, ma poi la memoria condivisa dovrà essere più grande (probabilmente sarà ancora OK anche se, ad esempio, la gamma di Linux PID è piccolo)

.

v'è un'utility chiamata Monit che fa quello che si sta cercando. Ma è per alcuni importanti processi in Linux .. tutti 10000 i processi sono importanti !!!

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