Question

Je voudrais savoir quelles sont les méthodes existent pour vérifier la santé d'un processus. Considérant que sur un système 10000 processus en cours d'exécution sont et vous devez vous assurer que dans le cas où l'un de ces processus va vers le bas, nous devons faire le nécessaire UP processus.

Était-ce utile?

La solution

Utiliser l'ID de processus (PID) et sondage si le processus est encore vivante ou morte est périodiquement; et si elle est morte, puis le faire revivre.

Cependant, si vous avez processus 10000, vous aurez probablement atteint la limite de processus du système d'exploitation en premier. Je suggère la refonte de votre programme afin que vous n'avez pas besoin que les processus beaucoup en premier lieu.

Autres conseils

processus Re fraie qui vont vers le bas est généralement traitée en ayant des programmes de lancement de spécifiques à exec () le programme et attendre SIGCHILD pour indiquer le processus de l'enfant a pris fin.

Pour les applications temps de démarrage (serveurs, etc.) comme des daemons arriviste peut faire pour vous automatiquement.

Alors que d'autres pointent que des applications existe déjà (que vous devriez vraiment utiliser sauf si vous avez une raison claire de ne pas) Je vais jeter une idée au hasard pour une solution personnalisée.

Si vous contrôlez tous les processus de N les rendre alors tous une zone de mémoire partagée bits N grande (donc, 10000 processus ~ 1 Ko, pas mal). Lors du démarrage de chaque processus lui donner un certain nombre, i, allant de 0 à N. Toutes les T secondes ont chaque processus mis peu i dans la mémoire partagée à 1. Un processus de suivi peut vérifier que tous les bits de N sont 1 toutes les secondes k*T, remise à zéro tous à 0 dans le processus.

Ceci est encore O (n), que vous éviter, mais les primitives sont tous très vite et devrait échelle fine jusqu'à la limite de thread OS.

Une idée alternative pour obtenir i serait juste d'utiliser le PID, mais la mémoire partagée devra être plus grand (sera probablement encore OK si, par exemple, la gamme PID Linux est faible)

.

il y a un utilitaire appelé Monit qui fait ce que vous recherchez. Mais il est pour certains processus importants dans Linux .. tous les 10000 processus sont importants !!!

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