node如何处理ports过多,导致进程开启太多,太耗内存的问题?

LuDongWei
  • 620

平台和使用插件

node pm2 express

问题描述:

一台服务器上会开启很多界面不相同,功能相同的网站(他们使用的接口是一样的,但是对于后台的端口与前台访问端口是不一样的。)。我这边实现方式是使用pm2来启动不同的网站,后台端口与前台访问端口会有不同的配置文件。启动截图如下:

clipboard.png

这样启动几个是没问题,但是如果启动10个,20个的话会出现内存不够的情况。

我想的解决办法:

因为它们除了界面不太一样外,其它内容相同,我想的是共同内容启动一份,然后不同的ports进来再显示不同的界面与获取对应的配置。具体代码如何实现或者说有node有什么插件呢?我听后端的说tomcat有类似的功能,node上如何实现呢?

网上找的解决代码与提示

Each HTTP server can only listen to one port at a time. Also, this is super easy to do with Express. expressjs.com/api.html#app.listen – Brad Oct 10 '13 at 13:18

var http=require('http');
var ports = [7006, 7007, 7008, 7009];
var servers = [];
var s;
function reqHandler(req, res) {
    console.log({
        remoteAddress: req.socket.remoteAddress,
        remotePort: req.socket.remotePort,
        localAddress: req.socket.localAddress,
        localPort: req.socket.localPort,
    });
}
ports.forEach(function(port) {
    s = http.createServer(reqHandler);
    s.listen(port);
    servers.push(s);
});

有什么好的解决办法,或者有相关实战经验的人希望能给我点建议和指导,谢谢了。

回复
阅读 2.3k
1 个回答

使用pm2管理的话,可以限制内存的吧

宣传栏