- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我的应用在 http://talkwithstranger.com/ 上运行我已经将它部署在 AWS EC2 上。我用这个命令
sudo nohup node index.js &
即使我关闭终端并退出 SSH,也要继续运行我的 Node JS 服务器。
然而,2 天后每次醒来,我发现 Node 服务器本身自动停止。我通过使用检查了正在运行的进程
ps -ef
我的 Node 脚本不存在。
谷歌浏览器说找不到站点 DNS,因为 NodeJS Express 当然没有运行来提供我的 html 文件,但为什么它会自行停止?
是什么导致我的服务器每 2 天意外关闭一次?我必须再次手动运行 nohup
才能再次运行它。
nohup 有过期时间吗?
最佳答案
您应该使用服务/进程管理器运行 node.js。您可以使用一些基本的东西,例如 forever
或 supervisord
但实际上我建议您看一下 PM2 .
它可以做很多事情 - 其中之一是它管理您的进程,确保它继续运行,在失败时重新启动它,管理日志等。您还可以让它在您重新启动服务器时自动启动.
它与https://pm2.io 结合起来变得非常强大,因为这使您能够远程监控服务器的指标,例如 CPU 和内存,并查看是否发生了异常,等等(例如甚至通过从 git 中拉取来远程更新软件)。然而,不幸的是,他们不再提供免费计划——他们的计划现在起价为每月 79 美元,这很遗憾。不过不用担心,PM2 应用程序本身仍然是免费和开源的,只是监控需要花钱。
PM2的基本用法:
npm install -g pm2
...安装 PM2。
pm2 start my_script.js
启动脚本并让它在后台运行。
pm2 status
显示任何正在运行的脚本的状态。
pm2 restart all
重新启动所有正在运行的脚本。
pm2 kill
停止所有脚本并完全关闭 PM2 守护程序。
pm2 monit
监控 CPU/RAM 使用情况并显示。
pm2 logs
显示最后 20 个输出和错误日志行,并开始将实时日志流式传输到控制台。日志存储在文件夹 ~/.pm2/logs
中。
使用 PM2,您的脚本不会停止 - 最多会重新启动。如果是这样,您将能够更轻松地理解原因,因为您可以轻松访问日志并观察内存使用情况等。
为了避免日志文件填满硬盘,我建议安装模块pm2-logrotate
:
pm2 install pm2-logrotate
要在服务器启动时使用相同的启动脚本自动启动 PM2,您可以先保存当前配置:
pm2 save
...然后使用以下命令安装启动脚本 - 按照显示的说明进行操作,具体取决于您使用的操作系统:
pm2 startup
要通过多进程、自定义环境变量等以更高级的方式使用 PM2,请查看 ecosystem files .
关于node.js - 即使在使用 sudo nohup 后 2 天后,Amazon EC2 NodeJS 服务器也会自行停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36907766/
我知道有一些关于这个主题的类似帖子,但没有一个对我有太大帮助(或者也许这就是因为我仍然是新手)。 无论如何,我正在寻找的是一个脚本来显示日期和日期以及从现在开始的 11 天。 下面的脚本是我用来显示当
我在 mysql 表中有一个 postdate 和 status 列。目前帖子的状态是= 1。我只想在提交帖子15天后更改状态= 0。任何人都可以提供帮助。 $todays = date('d-m-Y
我有这段代码,可以将当前日期转换为这种格式 2020-08-20 。但是我如何更改它以给出今天之后 10 天以及今天之前 10 天的日期。 例如今天是2020-08-20我试图从今天起计算10天202
我刚刚在 5 天前为我的应用上传了第 12 次更新 (APK),但它在 Google Play 中仍然不可用。通常只需要几个小时就可以使用。是否有任何解决方案/原因可能会发生这种情况?以前有人经历过吗
我已经使用 React Native 创建了一个适用于 iOS 的应用程序,但是在通过 Xcode 在实际 iPhone 上安装该应用程序几天后,它只是在我启动该应用程序 0.3 秒后退出该应用程序。
几周以来,我的 iOS 应用程序一直在运行 firebase 报告。我在 2 天前按照官方步骤添加了 crashlytics: https://firebase.google.com/docs/cra
在 javascript 中,我获取当前时刻,并向其添加 3 天。为什么年份加上 3 天仍然是 2018 年,格式为 2019 年? 当从 2 天 11 小时到 3 天 10 小时的范围内添加时,这会
我 4 天前在 google play 上发布了我的第一个应用程序(语音转短信),但我仍然无法通过它的名称或开发者名称在搜索中找到我的应用程序。我只能通过包名称或真实应用名称但没有空格 - “Voic
我在我的 Activity 中创建了一个 DatePickerDialog,我试图将 minDate 设置为 2 天后。 例如,今天是 25/5/2015,我希望最小日期为:27/5/2015 这是代
jQuery(document).ready(function(){ if (document.cookie.indexOf('visited=true') === -1) {
我是 Azure 存储帐户的新用户。在学习时我发现了以下链接: https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blob-s
我的应用在 http://talkwithstranger.com/ 上运行我已经将它部署在 AWS EC2 上。我用这个命令 sudo nohup node index.js & 即使我关闭终端并退
我是一名优秀的程序员,十分优秀!