我正在调查使用Node作为反向代理的可能性。我的项目的主要目标之一是实现非常高的性能。因此,我已经设置了一个Node服务器来代理请求到目标Node服务器,无论请求是什么,它都会响应“hello world”。
使用Apache Bench,我对每秒处理的请求数进行了比较。代理、目标和调用方分别在AWS的三个独立M1大型实例上。我的结果令人沮丧和困惑。
直接从调用方到目标:
使用Apache Bench,我对每秒处理的请求数进行了比较。代理、目标和调用方分别在AWS的三个独立M1大型实例上。我的结果令人沮丧和困惑。
直接从调用方到目标:
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);