在一个节点进程中运行多个httpServer或在自己的节点进程中运行每个服务器

时间:2014-03-06 14:45:27

标签: javascript performance node.js ports

我正在试图弄清楚什么是更好的解决方案。

我在我的节点应用程序中运行两个http服务器,在端口3000上运行服务器1,在端口3001上运行服务器2.服务器1正在进行主逻辑和数据库处理,而服务器2处理文件请求。

当我使用节点myApp.js启动我的应用程序时,两个服务器都会启动并监听其端口。

/*
 *Fire Up the Servers
 */
http.createServer(app).listen(3000, function(){
  console.log('HTTP Express server listening on port 3000');
});

http.createServer(fileserver).listen(3001, function(){
  console.log('HTTP Fileserver is listening on port 3001');
});

现在我的问题:有没有人知道如果我为每个服务器编写一个自己的节点进程会有什么不同,所以我必须运行启动服务器1的节点myApp.js ,侦听端口3000,然后运行侦听端口3001的节点myFileserver.js

有任何性能差异吗? 或者我可以阅读有关它的任何提示?

此致 马丁

1 个答案:

答案 0 :(得分:1)

取决于其余的代码。如果两个服务器都有共享状态,最好在同一个进程中启动它们。

如果没有共享状态,最好将它们放在单独的进程中,这样一个人的执行流程不会影响另一个请求服务器的请求数量。特别是如果一个是IO绑定而另一个是cpu密集的。

另外,如果你在同一个过程中启动它们,为什么不在同一个端口上做两件事呢?