我目前正在运行一个通过 Nifs 运行 C 代码的 Erlang 应用程序。但是,如果 C 代码中出现分段错误,则整个节点以及运行 Erlang 应用程序的 Erlang 虚拟机都会关闭。
如果虚拟机死机,监视 Erlang 应用程序并重新启动它的最佳方法是什么?
我目前正在运行一个通过 Nifs 运行 C 代码的 Erlang 应用程序。但是,如果 C 代码中出现分段错误,则整个节点以及运行 Erlang 应用程序的 Erlang 虚拟机都会关闭。
如果虚拟机死机,监视 Erlang 应用程序并重新启动它的最佳方法是什么?
我使用了一种叫做supervisord的东西。与心脏相比的一些优势:
如果你想以 Erlang 的方式来做,你可以使用上面提到的任何解决方案(心脏,supervisord)。如果你想以 Unix 方式来做,首先你应该让你的 Erlang 应用程序表现为 Unix 守护进程。
为此使用erld。接下来你可以做一件熟悉的事情:监控/重启熟悉的 Unix 守护进程。