1

我目前正在编写一个非常简单的负载测试,使用 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();

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

4

1 回答 1

1

http.Agent具有指示给定代理可以打开多少个套接字连接maxSockets属性;它默认为 5(因此您实际上一次只发出 5 个 HTTP 请求)。您可以在 上修改此值http.globalAgent,这是 http 模块默认用于发出 HTTP 请求的代理:

http.globalAgent.maxSockets = 1000 // or as mnay as you want to handle at a time
于 2012-07-03T21:42:51.633 回答