Проверка работоспособности приложения - PullRequest
2 голосов
/ 05 июля 2010

Я хочу знать, какие существуют методы для проверки работоспособности процесса. Учитывая, что в системе Процесс 10000 запущен, и вы должны убедиться, что в случае сбоя любого из этих процессов мы должны запустить его.

Ответы [ 4 ]

2 голосов
/ 05 июля 2010

Используйте идентификатор процесса (PID) и опросите, является ли процесс все еще живым или периодически отключен;и если он мертв, то восстановите его.

Однако, если у вас есть процесс 10000, вы, вероятно, сначала достигнете предела процесса ОС.Я советую переделать вашу программу, чтобы вам не понадобилось много процессов.

1 голос
/ 07 июля 2010

В то время как другие указывают на то, что приложения уже существуют (которые вы действительно должны использовать, если у вас нет явной причины не делать этого), я выброшу случайную идею для индивидуального решения.

Если вы контролируете всеN процессов затем делают так, что все они имеют одну общую область памяти N битов (так что 10000 процессов ~ 1 КБ, неплохо).При запуске каждого процесса присвойте ему число i в диапазоне от 0 до N. Каждые T секунд каждый процесс будет устанавливать бит i в общей памяти равным 1. Процесс мониторинга может проверить, что все Nбиты равны 1 каждые k*T секунд, в процессе их все сбрасывается на 0.

Это все еще O (n), чего вы не избежите, но все примитивы очень быстрые и должны хорошо масштабироватьсядо ограничения потока ОС.

Альтернативная идея для получения i будет состоять в том, чтобы просто использовать PID, но тогда общая память должна быть больше (хотя, вероятно, все еще будет в порядке; например,диапазон Linux PID мал).

1 голос
/ 05 июля 2010

Повторное порождение процессов, которые завершаются, обычно выполняется с помощью специальных программ запуска для exec () программы и ожидания SIGCHILD, чтобы указать, что дочерний процесс завершен.

Для приложений времени загрузки (серверы и т. Д.)такие демоны, как upstart , могут сделать это автоматически.

0 голосов
/ 05 июля 2010

есть утилита под названием monit , которая делает то, что вы ищете. Но это для некоторых важных процессов в Linux .. все 10000 процессов важны !!!

...