一直听着PM2的大名,但是并不是很了解这位大哥的具体用法,今天特意来一波测试,=。。。。

以下,直接上代码---node

/**
 * 首页路由
 * @param app Express.App
 * @return {[type]} [description]
 */
function _indexRoutes (app) {
  app.get('/index', function(req, res) {
    var j = 0;
    while (true) {
      j++;
    }
    res.send(j + '');
    console.log(123)
  });
}

module.exports = _indexRoutes;

如上所见,我来了一发死循环已保证该核CPU(node单线程,占一核CPU)满负荷运行,哇咔咔。。
接下来,用大PM2启动我的node服务

PM2 start -i app.js 4

启动四个实例服务。

然后我用了三个浏览器开始访问/index
下面是结果截图:
图片描述

显而易见的,PM2动态分配了CPU资源,在某个实例CPU满负荷的情况下自动调用下一个实例,这就是它的内建负载均衡。

再看看OS的任务管理器

图片描述

我的8核,启动了四个实例,CPU稳定在50%左右,去掉其他服务占比,可以得知:一台机子能启动的最大实例个数为CPU核数。

另外,恕我直言,这很高端。。。。

如果session共享没有什么难度的话,不过想来走redis的session应该没有问题吧,有待测试。。。

以上个人观点,欢迎拍砖。。。。。


裴东来
88 声望1 粉丝

一枚小前端