因此,我尝试在一台嵌入式计算机上保持Node服务器在现场运行。这导致我利用inittab的重新生成操作。下面是我添加到inittab的文件:
node:5:respawn:node /path/to/node/files &
我知道一个事实,当我从命令行启动这个节点应用程序时,它不会到达主体的底部,直到我发出命令后2-3秒才console.log“完成”。
因此,我感觉在2-3秒的窗口中,操作系统只是不断地重新启动节点应用程序。我也在错误日志中看到,事实上内核最终杀死了一堆节点进程,因为它耗尽了内存和其他东西……另外,我确实得到了'node‘进程更新太快也会暂停5分钟的消息。
我试着把它包装在一个脚本中,做一些工作。我知道我可以使用crontab,但那是每一分钟……我做错了什么吗?或者我应该一起使用一种不同的方法?
欢迎任何建议!
提亚
发布于 2015-06-19 23:05:19
对您来说肯定太晚了,但以防其他人发现这样的问题:尝试从命令调用中删除&。
发生的情况是,当命令转到后台时(多亏了&),父进程(init)看到它退出了,并重新唤醒它。结果:你的命令产生了新的瞬间风暴。更糟糕的是,您提到了嵌入式,所以我猜您使用的是busybox,它的init不会限制重新生成的速率--就像其他实现一样。因此,只有当系统内存不足时,重新生成才会结束。
发布于 2014-07-18 03:21:56
inittab在这方面有点过头了。我发现我需要的是一个进程监控器。我发现了一个轻量级的,高效的;它有一些很好的报告,在这个领域工作得很好。http://en.wikipedia.org/wiki/Process_control_daemon
使用它需要配置这个守护进程来为您启动和监视Node.js应用程序。
这是一种从操作系统端工作的解决方案。
另一种方法如下所示。因此,如果你想像我一样保持Node.js运行,有几个模块是为了保持其他Node.js应用程序的运行而编写的。提到一对夫妇,他们是永生和重生的。我选择了使用respawn。
这种方法需要启动一个用Node.js编写的应用程序,该应用程序使用respawn模块来启动和监视您感兴趣的实际Node.js应用程序,无论如何,它都会继续运行。
当然,这样做的缺点是,如果Node.js引擎(V8)完全崩溃,那么您的监视和被监视的进程也将随之崩溃:-(。但总比什么都没有好!
PCD将是理想的选择。它可能只会在操作系统关闭的情况下才会关闭,如果操作系统关闭,那么希望有一个看门狗在适当的地方重新启动设备/硬件。
尼科
https://stackoverflow.com/questions/24522020
复制相似问题