Я изучаю возможность использования Node в качестве обратного прокси.Одна из основных целей моего проекта - обеспечить ОЧЕНЬ высокую производительность.Поэтому я настроил сервер узлов для прокси-запросов к целевому серверу узлов, который будет отвечать «привет мир» независимо от запроса.
Используя 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 (предполагается, что светится быстро) не достигает того же самого.
Вот мой прокси-код вУзел 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);