2

我想知道检查进程运行状况的方法有哪些。考虑到系统上有 10000 个进程正在运行,并且您必须确保万一这些进程中的任何一个出现故障,我们需要使进程 UP。

4

4 回答 4

2

使用进程 ID (PID) 并定期轮询进程是否还活着或已死;如果它死了,那就复活它。

但是,如果您有 10000 个进程,您可能会首先达到操作系统的进程限制。我建议重新设计你的程序,这样你一开始就不需要那么多流程。

于 2010-07-05T10:47:16.553 回答
1

通常通过让特定的启动程序执行()程序并等待 SIGCHILD 指示子进程结束来处理重新生成的进程。

对于启动时应用程序(服务器等),像upstart这样的守护进程可以自动为您执行此操作。

于 2010-07-05T12:36:00.900 回答
1

虽然其他人指出应用程序已经存在(除非您有明确的理由不这样做,否则您真的应该使用它)我会抛出一个自定义解决方案的随机想法。

如果您控制所有N进程,则使它们都具有一个大的共享内存区域N位(因此,10000 个进程〜 1KB,还不错)。启动每个进程时,给它一个数字,i范围从 0 到 N。T每个进程每秒都会将共享内存中的位设置i为 1。监控进程可以检查所有N位每秒是否为 1 k*T,然后将它们全部重置为 0过程。

这仍然是 O(n),您无法避免,但这些原语都非常快,并且应该可以很好地扩展到操作系统线程限制。

获取的另一种想法i是仅使用 PID,但共享内存必须更大(但可能仍然可以;例如,Linux PID 范围很小)。

于 2010-07-07T16:52:03.433 回答
0

有一个名为monit的实用程序可以满足您的需求。但它对于 Linux 中的某些重要进程..所有 10000 个进程都很重要!!!

于 2010-07-05T15:35:40.553 回答