Как использовать кластеры Node.js с моим простым приложением Express?

— я создал простое приложение, которое извлекает данные (50 элементов) из базы данных Redis и выбрасывает ее на локальный хост. Я выполнил ApacheBench (c = 100, n = 50000) и получил почти приличные 150 запросов в секунду на двухъядерном T2080 с частотой 1,73 ГГц (мой 6-летний ноутбук), но использование процессора очень разочаровывает, так как показано: enter image description here

Используется только одно ядро, что соответствует дизайну Node, но я думаю, что смогу почти удвоить количество запросов в секунду до ~ 300, а может быть, даже больше, если смогу использовать кластеры Node.js. Я немного возился, но так и не смог понять, как поместить приведенный здесь коддля использования с моим приложением, которое указано ниже:

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 );

Я также хочу подчеркнуть, что приложение является интенсивным вводом-выводом (не интенсивно использует ЦП, что сделало бы что-то вроде threads-a-gogoлучшим выбором, чем кластеры).

Хотелось бы помощи в выяснении этого.

27
задан vjk2005 19 May 2012 в 09:06
поделиться