栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在简单的Express应用程序中使用Node.js集群?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在简单的Express应用程序中使用Node.js集群?

实际上,您的工作负载并不是真正的I /
O约束:由于基于Jade的动态页面生成的成本,因此它是CPU约束。我无法猜测您的Jade模板的复杂性,但是即使使用简单的模板,生成HTML页面也很昂贵。

对于我的测试,我使用了以下模板:

html(lang="en")  head    title Example  body    h1 Jade - node template engine    #container      ul#users        each user in items          li User:#{user}

我在Redis的item键中添加了100个虚拟字符串。

在我的盒子上,使用100%的node.js CPU可获得475 re / s(这意味着该双核盒子上的CPU消耗为50%)。让我们替换:

res.render( 'index', { items: items } );

通过:

res.send( '<html lang="en"><head><title>Example</title></head><body><h1>Jade - node template engine</h1><div id="container"><ul id="users"><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li><li>User:NOTHING</li></ul></div></body></html>' );

现在,基准测试的结果接近2700 req / s。因此,瓶颈显然归因于HTML页面的格式。

在这种情况下使用群集程序包是一个好主意,而且很简单。该代码可以修改如下:

var cluster = require('cluster')if ( cluster.isMaster ) {  for ( var i=0; i<2; ++i )    cluster.fork();} else {  var      express = require( 'express' ),      app     = express.createServer(),      redis   = require( 'redis' ).createClient();  app.configure( function() {      app.set( 'view options', { layout: false } );      app.set( 'view engine', 'jade' );      app.set( 'views', __dirname + '/views' );      app.use( express.bodyParser() );  });  function log( what ) { console.log( what ); }  app.get( '/', function( req, res ) {      redis.lrange( 'items', 0, 50, function( err, items ) { if( err ) { log( err ); } else {   res.render( 'index', { items: items } ); }      });  });  app.listen( 8080 );}

现在基准测试的结果接近750 req / s,CPU消耗为100%(与最初的475 req / s进行比较)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/436768.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号