场景: 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)
自顶
贴相关的 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) {
没有理解进程集群的概念