为什么我可以在一个进程中运行2个或更多http服务器(具有不同的端口)

时间:2017-12-08 09:43:46

标签: node.js express

我的Windows7任务管理器中只有1个节点进程。惊喜。 nodejs如何实现这一点,如果我在不同的进程中拆分服务器有什么区别?感谢。

http.createServer(function(req, res) {
     res.writeHead(200, {'Content-Type': 'text/plain'});
     res.end('Hello World'); 
}).listen(5000, '127.0.0.1');

http.createServer(function(req, res) {
     res.writeHead(200, {'Content-Type': 'text/plain'});
     res.end('Hello World2');
}).listen(5001, '127.0.0.1');

http.createServer(function(req, res) {
     res.writeHead(200, {'Content-Type': 'text/plain'});
     res.end('Hello World3');
}).listen(5002, '127.0.0.1');

2 个答案:

答案 0 :(得分:0)

单个进程可以打开与操作系统允许的一样多的套接字。只要它不尝试在另一个套接字已经占用的端口上打开套接字。

一个区别是您为每个服务器运行一个线程而不是所有三个服务器都运行一个线程,因为Node每个进程只运行一个线程。如果您遇到性能问题,这可能与您相关。

答案 1 :(得分:0)

您有一个多任务系统,nodejs每个端口可以有一个或多个线程。

让单个nodejs进程处理多个端口的优点是可以节省一点RAM。

缺点是当一台服务器崩溃时,服务器和服务器都会崩溃。可能会受到影响。