我想知道有什么方法可以检查过程的健康。考虑到在系统上正在运行10000个过程,您必须确保在任何这些过程中的任何一个过程中都需要降低,我们需要将流程进行整理。

有帮助吗?

解决方案

使用过程ID(PID)并进行轮询,无论该过程是否还活着还是定期死亡;如果它已经死了,请恢复它。

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

其他提示

重新产生的流程通常是通过具有特定的启动程序程序来执行程序并等待Sigchild指示子过程结束的过程来处理的。

对于启动时间应用程序(服务器等) 暴发户 可以自动为您执行此操作。

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

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

这仍然是o(n),您将无法避免,但是原语都非常快,应该延伸到OS线程限制。

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

有一个叫做的实用程序 monit 它可以做您想要的。但这是Linux中的某些重要过程。.所有10000个过程都很重要!!!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top