【发布时间】:2011-11-01 19:39:02
【问题描述】:
我正在研究使用 Node 作为反向代理的可能性。我的项目的主要目标之一是让它具有非常高的性能。所以我设置了一个节点服务器来代理对目标节点服务器的请求,无论请求如何,目标节点服务器都会响应“hello world”。
我使用 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);
【问题讨论】:
-
为什么我认为我需要什么?我正在研究构建代理产品并尝试选择最佳基础技术。
标签: http node.js lighttpd reverse-proxy