我正在做一些負載測試和編寫節點腳本來做到這一點。我的結果非常差,直到我意識到我的測試代碼纔是怪罪。我每秒平均約30-50個請求(進入服務器)使用下面的代碼來提出請求。 30-50似乎非常低。這是在一個4核心的Mac上。這是對的還是我做了一件完全錯誤的事情?http.request()每秒每個node.js進程
var http = require('http');
var sys = require('util');
http.globalAgent.maxSockets = 100000;
var http = require('http');
http.globalAgent.maxSockets = 100000;
var Request = function (request, params, host, port, completionFn, errorFn)
{
if(!params)
params = '';
if(typeof(errorFn) != 'function')
{
errorFn = function (e)
{
console.log('request error!? ' + e.message);
process.exit();
}
}
var paramsStr = '';
for(var item in params)
paramsStr += '&' + item + '=' + encodeURI(params[item]);
var path = '/' + request;
if(paramsStr != '')
path += '?' + paramsStr.substr(1);
var options =
{
host: host,
port: port,
path: path,
agent: false
};
http.request(options,
function (response)
{
var responseData = '';
response.on('data',
function (chunk)
{
responseData += chunk;
}
).on('end',
function()
{
completionFn(httpRequest.To_JSON(responseData));
}
).on('error', errorFn);
}
).on('error', errorFn).end();
};
新信息:
有趣的是在Chrome中運行這個網我大約每秒250請求這似乎單個節點更合理。儘管瀏覽器確實很快崩潰。
for(var i = 0; i < 1000000; i++)
{
$.get('/service', {index:i},function(result){}).error(
function()
{
out.append('fail ');
}
);
}
你有什麼代碼啓動這些請求?編寫基準測試的節點並不是一種特別好的語言。儘管您嘗試異步地發出請求,但內部事件可能非常同步。請教我的例子。 – ChrisCM