Node.js 单个服务器上的多个NodeJ实例

Node.js 单个服务器上的多个NodeJ实例,node.js,Node.js,在我的设置中,我在haproxy后面运行node js,使用haproxy作为反向代理和负载平衡器,将调用路由到我运行的多个节点服务器。在每个节点服务器上,我运行多个独立的节点进程,如下所示: 端口=3000永久启动app1/app.js 端口=3001永久启动app2/app.js 端口=3002永久启动app3/app.js 等等 现在,我正在每台服务器上安装我的应用程序的多个实例,并使用forever手动启动这些进程。我的问题是,考虑到这些进程在每台服务器上可能会有所不同,因为我将在每台服

在我的设置中,我在haproxy后面运行node js,使用haproxy作为反向代理和负载平衡器,将调用路由到我运行的多个节点服务器。在每个节点服务器上,我运行多个独立的节点进程,如下所示:

端口=3000永久启动app1/app.js

端口=3001永久启动app2/app.js

端口=3002永久启动app3/app.js

等等

现在,我正在每台服务器上安装我的应用程序的多个实例,并使用forever手动启动这些进程。我的问题是,考虑到这些进程在每台服务器上可能会有所不同,因为我将在每台服务器上运行(numocpus-1)进程,因此如何自动启动这些进程

另外,如果我想在服务器1上运行同一应用程序的10个nodejs进程,我是否需要在10个单独的文件夹中安装该应用程序,或者我可以只在一个文件夹中安装该应用程序,因为它的代码相同,并且以某种方式运行了10个单独的实例


如果您不想使用集群模式,但却没有关于如何实现这一点的文档或资料,那么这是生产中运行节点的一种基本方式,对此我感到震惊。

一种可能的方法是将子进程从主进程分离出来,这样子进程就不会随主进程一起消亡

在主进程中,您可以编写代码来启动不同端口上的多个子进程,然后通过使用操作系统进程命令(如
ps
)另外编写代码来监视正在运行的进程的运行状况。您可以分析
vtop
npm的源代码,它使用这些命令显示正在运行的进程和CPU使用情况的统计信息。此外,您可以优化主进程的代码,这样,如果子进程被另一个主进程启动,它就不必启动子进程

您可以在
setTimeInterval
上执行以下操作(vtop npm执行此操作):

分支分离子进程的代码段:

var spawn = require('child_process').spawn;

var child = spawn('forever', ['start', 'app.js'], {
  detached: true,
  stdio: [ 'ignore', out, err ]
});

child.unref();

实际上,集群模块是为满足您的需求而构建的。也许您应该更多地关注如何在集群模块中避免您担心的任何问题,而不是避免所有已经构建的功能来实现您想要的功能。
var spawn = require('child_process').spawn;

var child = spawn('forever', ['start', 'app.js'], {
  detached: true,
  stdio: [ 'ignore', out, err ]
});

child.unref();