javascript - 即使使用了 Forever JS,Node JS 应用程序也会自行崩溃

标签 javascript node.js amazon-web-services amazon-ec2 forever

我只是厌倦了看到我的服务器每次断断续续地停机。每当我醒来时,它就停机了。每次我都必须去SSH然后运行

forever restartall 

重新启动我的 Node 应用程序:(

我查看了forever的日志文件,它是这样说的

error: Forever detected script was killed by signal: SIGKILL
error: Script restart attempt #1

我完全不知道为什么会发生这种情况。

我什至每 50 分钟运行一次 cron 作业来自动重启 Node js,以防它自行关闭

0,50 * * * * * forever restartall

我的应用程序正在 Ubuntu EC2 AWS 上运行。我使用以下命令来永远启动我的 Node 应用程序:

forever -m5000 -w start index.js

此外,这是最近发生的系统日志的一些快照

Jun  1 12:50:01 ip-172-31-28-35 CRON[25924]: (ubuntu) CMD (forever restartall)
Jun  1 12:50:01 ip-172-31-28-35 CRON[25923]: (CRON) info (No MTA installed, discarding output)
Jun  1 13:00:01 ip-172-31-28-35 CRON[25930]: (ubuntu) CMD (forever restartall)
Jun  1 13:00:01 ip-172-31-28-35 CRON[25929]: (CRON) info (No MTA installed, discarding output)
Jun  1 13:05:50 ip-172-31-28-35 dhclient: DHCPREQUEST of 172.31.28.35 on eth0 to 172.31.16.1 port 67 (xid=0x58e67545)
Jun  1 13:05:50 ip-172-31-28-35 dhclient: DHCPACK of 172.31.28.35 from 172.31.16.1
Jun  1 13:05:50 ip-172-31-28-35 dhclient: bound to 172.31.28.35 -- renewal in 1415 seconds.
Jun  1 13:09:01 ip-172-31-28-35 CRON[26000]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime))
Jun  1 13:17:01 ip-172-31-28-35 CRON[26016]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun  1 13:20:01 ip-172-31-28-35 CRON[26023]: (ubuntu) CMD (/home/ubuntu/cron/serv.sh)
Jun  1 13:20:01 ip-172-31-28-35 CRON[26022]: (CRON) info (No MTA installed, discarding output)
Jun  1 13:29:25 ip-172-31-28-35 dhclient: DHCPREQUEST of 172.31.28.35 on eth0 to 172.31.16.1 port 67 (xid=0x58e67545)
Jun  1 13:29:25 ip-172-31-28-35 dhclient: DHCPACK of 172.31.28.35 from 172.31.16.1
Jun  1 13:29:25 ip-172-31-28-35 dhclient: bound to 172.31.28.35 -- renewal in 1560 seconds.
Jun  1 13:34:39 ip-172-31-28-35 crontab[26289]: (ubuntu) LIST (ubuntu)

这是我的 Ubuntu 终端上的 free-h 命令的快照: enter image description here

这是 df -h 命令的快照: enter image description here

有什么方法可以解决这个问题并诊断我的应用程序自行崩溃的原因吗?

遵循建议后的最新编辑和日志: 卸载了MySQL。 添加了交换。 我添加了未捕获的异常代码 现在,当我今天醒来时,服务器再次关闭,这是我的永久日志 http://kl1p.com/AI01这些是我在崩溃和系统日志屏幕截图之后的 free-h https://snag.gy/WMzqL0.jpg https://snag.gy/0wG8Dx.jpg

谁能帮忙解释一下是什么导致了 RAM 被充分使用,为什么 Node JS 会导致错误,如何修复它们?

最佳答案

我怀疑内存有问题。强制永远重新启动(cron 等)只会掩盖真正的问题。

将其添加到您的代码中:

process.on('uncaughtException', function (err) {
  console.log("Uncaught Exception:", err);
  process.exit(1);  // This is VITAL. Don't swallow the err and try to continue.
});

这将允许您开始诊断导致 Node 服务器失败的原因。

关于javascript - 即使使用了 Forever JS,Node JS 应用程序也会自行崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37570346/

相关文章:

javascript - npm 从 package-lock.json 文件中创建一个 package.json 文件?

amazon-web-services - 部署cloudformation模板时指定S3存储桶

ruby-on-rails - Rspec - 引发错误时参数数量错误

amazon-web-services - 如何在 Amazon Aws 上运行 Python Spark 代码?

javascript - 是否可以从 GAS 更改 Google 协作平台 DOM?

javascript - 循环ajaxcallback(WCF服务)

javascript - Nodejs中的动态函数调用

javascript - 如何从静态源生成 crypto.createCipheriv 参数

javascript - 根据某些条件在我的 HTML 页面中创建一个对话框

javascript - 为什么即使我们在使用 new 关键字创建对象时手动将其更改为另一个构造函数,也会执行 A 对象的构造函数?