PM2生产优化

我只是尝试在“生产”环境中部署节点应用程序。

我使用这个命令使用PM2来运行应用程序。 pm2 start app.js --name <appname>

我的问题是:

  1. 为什么我看child_process我分叉的child_processconsole.log
  2. 可以调用很多child_process.fork吗?

编辑1

基本上,应用程序使用chokidar来观看文件夹。 当有新文件时,它将检查文件types,然后执行以下任一项:

  1. 如果文件types是.FLV那么应用程序会将文档添加到mLab中承载的MongoDB集合中。
  2. 如果文件types是.PNG则应用程序将使用child_process.fork将文件上载到S3存储桶。
  3. 如果文件types是.MP4 ,应用程序将使用child_process.fork将file upload到S3存储桶,然后运行FFmpeg命令生成一个在另一个child_process.fork上运行的屏幕截图,然后触发上面的过程2 ,同时执行MongoDB更新另一个child_process.fork

这是代码片段

1. Chokidar Watcher(app.js)

Chokidar守望者


编辑2

为我如何使用chokidar和分支subprocess添加了代码片段。

为了让孩子的stdout和stderr使用父母的pipe道,你需要告诉它做为spawn命令的一部分。 这在文档中有解释:

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

根据需要产生其他进程是很好的,受限于你的系统限制,尽pipe代码示例似乎只是一次产生一个。