我目前正在编写一个非常简单的负载测试,使用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启动器的分布式设置,我会看到相同的行为吗?
答案 0 :(得分:1)
http.Agent
有a maxSockets
attribute,表示给定代理可以打开的套接字连接数;它默认为5(所以你实际上一次只发出5个HTTP请求)。您可以在http.globalAgent
上修改此值,这是http模块默认用于发出HTTP请求的代理:
http.globalAgent.maxSockets = 1000 // or as mnay as you want to handle at a time