增加node进程数为什么效率不升反降??
发布于 11 年前 作者 lijianwuchen 5539 次浏览 最后一次编辑是 8 年前

场景: node向某服务器发请求,每次发5000个请求,等待这5000个处理完后,再发5000,如此循环进行.机器配置8个cpu核

现象: 当我开启一个node程序时,该程序的cpu使用率能达到90-100% ,并且每分钟能发27万左右的请求。 但是当我开两个node 程序时,每个node的cpu使用率只有60%, 并且每分钟一共可发4万请求。

太诡异了,在系统负载还很小的情况下,再增一个node,不是把效率翻倍吗? who can tell me why?

代码如下: var http=require(‘http’) var logger=require(’./log’).clientLogger var options = { port: 3000, path: ‘/info?n=1&m=2’, method: ‘GET’, host:‘db11’ };

count=6000

function main(allcount){

for(var i=0;i<count;i++){ var req = http.request(options, function(res) { res.setEncoding(‘utf8’); res.on(‘data’, function (chunk) { logger.debug('BODY: ’ + chunk); if(!–allcount) { main(count) } }); });

req.on(‘error’, function(e) { logger.error('problem with request: ’ + e.message); if(!–allcount) { main(count) } });

req.end(); logger.info(‘send a request’) } }

main(count)

setInterval(function(){process.exit(0)},5601000)

13 回复

贴相关的 node.js 端代码上来看看。

上代码……

nodejs 是运行时候的多线程,当你增加node个数时对应的线程就多了,CPU就会忙于切换照成性能降低。

@lijianwuchen 这代码一看就是新手写的……

@lijianwuchen 你这分明是给人家服务器进行DoS攻击

如果不是多核,增加进程肯定会降低效率,就像楼上所说的那样。

你管这个叫多进程??

I服了U……

我以为我看漏了, 看了半天 楞是没找到child这个关键字… 难道你以为for就是多进程 @newghost 我不是F了他 是直接碉堡了…

 var mCluster = require('cluster');
 ....
 
  for ( var index = 0; index < mCpuCount; index++) {

  var tWorker = mCluster.fork();

  tWorker.on('message', function(m,aSocket) {

没有理解进程集群的概念

回到顶部