即使使用sudo nohup后,Amazon EC2 NodeJS服务器也会在2天后自行停止

我有我的应用程序在http://talkwithstranger.com/上运行,我已经在AWS EC2上部署了它。 我使用这个命令

sudo nohup node index.js & 

即使closures我的terminal并退出SSH,也要继续运行我的Node JS服务器。

然而,每当我醒来2天后,我发现节点服务器本身自动停止。 我通过使用检查正在运行的进程

 ps -ef 

和我的节点脚本不在那里。

谷歌浏览器说,网站的DNS没有find,因为nodeJS快递不是当然服务我的HTML文件。 但为什么它停止?

是什么导致这个意外的closures我的服务器每两天后? 我必须再次手动运行nohup再次运行。

nohup是否有时间到期或什么?

有任何想法吗?

提前致谢

你可以尝试一下,安装使用下面的命令。

 npm install -g forever 

然后永远开始:

 forever start index.js 

您应该使用服务/进程pipe理器来运行node.js。 你可以使用一些基本的东西,如foreversupervisord但我实际上build议你看看PM2 。

它可以做很多事情 – 其中之一是它pipe理你的进程,确保它继续运行,当它失败时重新启动它,pipe理日志等等。你也可以在重新启动服务器时自动启动它。

它与http://keymetrics.io (也有一个免费的计划)结合起来变得非常强大,因为这使您能够远程监视服务器的指标(如CPU和内存),并查看是否发生exception(付费计划也会将您警报)等等(比如甚至通过从git中拉出来远程更新软件)。

PM2的基本用法:

 npm install -g pm2 

…安装PM2。

 pm2 start my_script.js 

启动一个脚本,让它在后台运行。

 pm2 status 

显示任何正在运行的脚本的状态。

 pm2 restart all 

重新启动所有运行的脚本。

 pm2 logs 

监视CPU / RAM使用情况并显示它。

 pm2 monit 

显示最后20个输出和错误日志行,并开始将实时日志stream式传输到控制台。 日志存储在~/.pm2/logs文件夹中。

使用PM2,你的脚本不会停止 – 至多会重启。 如果这样做,您将能够更容易地理解为什么,因为您可以轻松访问日志并观察内存使用情况等等。