PM2.5生产优化

PM2 Production Optimization

我刚刚尝试在 "production" 环境中部署节点应用程序。

我使用 PM2 运行通过使用此命令来安装应用程序。 pm2 start app.js --name <appname>

我的问题是:

  1. 为什么我看不到我分叉的 child_processconsole.log
  2. 可以打电话很多child_process.fork吗?

编辑 1

基本上,应用程序所做的是使用 chokidar 监视文件夹。 当有新文件时,它会检查文件类型,然后执行以下操作之一:

  1. 如果文件类型是 .FLV,应用程序会将文档添加到 MongoDB 集合中托管在 mLab 中。
  2. 如果文件类型是 .PNG,应用程序将使用 child_process.fork.
  3. 将文件上传到 S3 存储桶
  4. 如果文件类型是 .MP4,应用程序将使用 child_process.fork 将文件上传到 S3 存储桶,然后 运行 和 FFmpeg 命令生成屏幕截图 运行s 在另一个 child_process.fork 上,然后触发上面的进程号 2,它还在另一个 child_process.fork.
  5. 上执行 MongoDB 更新

这是代码片段

1. Chokidar 观察者 (app.js)


编辑 2

添加了有关如何使用 chokidar 和分叉子进程的代码片段。

要让 children 的标准输出和标准错误使用 parent 的管道,您需要在 spawn 命令中告诉它这样做。这在文档中有解释:

https://nodejs.org/api/child_process.html#child_process_child_stdio

根据您的系统限制,根据需要生成其他进程很好,尽管代码示例似乎一次只生成一个。