Monitoraggio dei processi in ambiente Linux?

1

Sto provando a scrivere un'applicazione multi thread / processi e ho bisogno di sapere come monitorare un processo da un altro processo in ogni momento. Quindi ecco quello che ho, ho un 2 processi, ognuno con più thread che gestiscono la parte di rete, poi un altro 2 processo anche con più thread che interagiscono con DB e con i processi di rete, quello che devo fare è che se per Ad esempio uno dei processi di rete va giù il processo di DB inizia l'invio al processo di rete live fino a quando il secondo è di nuovo attivo. Sto usando fifo tra il DB e il processo di rete.

Stavo pensando di inviare messaggi con il messaggio che passava tutto il tempo, ma non sono sicuro che questa sia una buona idea o ho bisogno di usare un altro IPC per questo problema, o probabilmente nessuno dei due è buono e devo usare interamente qualcos'altro?

    
posta poly 02.07.2012 - 22:28
fonte

1 risposta

2

Direi che non dovresti dipendere da questo per il routing dei messaggi. Suggerirei di avere una coda di messaggi singoli da cui tutti i thread di rete selezionerebbero i messaggi, quindi se uno muore, tutti i messaggi non elaborati vengono rilevati dall'altro (invece di alcuni tra il thread morente e il cane da guardia che rileva che viene inviato al nero buco). Quello durante l'elaborazione di cui è andato in crash andrà comunque perso, quindi hai ancora bisogno di resilienza, ma l'interruzione sarà minore.

Quindi avresti solo un watchdog per assicurarti che ci sia sempre il numero richiesto di thread in esecuzione. I thread invierebbero un messaggio al watchdog ogni n secondi e se nessun messaggio viene ricevuto da qualche thread per 3 o 4 volte n , il watchdog lo ucciderà e inizierà nuovo uno.

    
risposta data 03.07.2012 - 09:54
fonte

Leggi altre domande sui tag