Производительность обратного прокси Nodejs

Я исследую возможность использования узла в качестве обратного прокси. Одна из основных целей моего проекта - ОЧЕНЬ высокая производительность. Итак, я настроил сервер узла для прокси-запросов к серверу целевого узла, который будет отвечать «привет, мир» независимо от запроса.

Используя Apache Bench, я провел некоторое сравнение количества запросов, обрабатываемых в секунду. Прокси-сервер, цель и вызывающая сторона находятся в отдельных экземплярах M1 Large в AWS. Мои результаты разочаровывают и сбивают с толку.

Напрямую от вызывающего к цели:

ab -c 100 -n 10000 http://target-instance/

= ~ 2600 запросов в секунду

От вызывающего абонента через прокси к цели

ab -c 100 -n 10000 http://proxy-instance/

= ~ 1100 запросов в секунду

Используя lighttpd, я смог получить ~ 3500 запросов / во-вторых, прокси и цель

Я разочарован тем, что прокси-сервер менее эффективен, чем целевой сервер. Сравнивая другие продукты, такие как lighttpd, я видел, что прокси-сервер дает сопоставимые результаты с целевым, поэтому я не понимаю, когда Node (который должен быть молниеносным) не достигает того же.

Вот мой прокси-код в Node v0.5.9: Я что-то упустил?

var server =
http.createServer(function(req, res){
    var opts = { host: 'target-instance',
                 port: 80,
                 path: '/',
                 method: 'GET'};
    var proxyRequest = http.get(opts, function(response){
            response.on('data', function(chunk){
                    res.write(chunk);
            });
            response.on('end', function(){
                    res.end()
            });
    });
});
server.listen(80);
9
задан jonnysamps 1 November 2011 в 19:39
поделиться