在Apache Webserver上抛出大量node.js GET请求时,服务器端CPU使用率较低

时间:2012-07-03 21:38:41

标签: apache http node.js load-testing

我目前正在编写一个非常简单的负载测试,使用node.js作为测试发起人,Apache作为我的WebServer,提供一个简单的http网站。如果我使用以下代码发出1000个GET请求

var options = {
  host: 'private.webserver',
  path: '/',
  port: '80',
  method: 'GET'
};
var testnr = 1000;
while(testnr--) http.request(options, function(res){cb();}).end();

它需要相当长的时间才能完成(正如预期的那样),但在服务器上,我只看到运行测试时CPU使用率约为10-15%。他们的某种限制器是活跃的吗?如果我使用node.js启动器的分布式设置,我会看到相同的行为吗?

1 个答案:

答案 0 :(得分:1)

http.Agenta maxSockets attribute,表示给定代理可以打开的套接字连接数;它默认为5(所以你实际上一次只发出5个HTTP请求)。您可以在http.globalAgent上修改此值,这是http模块默认用于发出HTTP请求的代理:

http.globalAgent.maxSockets = 1000 // or as mnay as you want to handle at a time