У меня было требование создать API REST в node.js и искал более легкую структуру, чем express.js, которая, вероятно, избегает нежелательных функций и будет действовать как настраиваемая инфраструктура для построения REST API. Для одного и того же случая рекомендуется пересмотреть его введение.
Чтение Зачем использовать restify и не выражать? казалось, что restify - хороший выбор.
Но неожиданность пришла, когда я опробовал оба с нагрузкой.
Я сделал образец REST API для Reify и затопил его 1000 запросов в секунду. Удивите меня, что маршрут начал не реагировать через некоторое время. То же самое приложение, построенное на express.js, обработало все.
В настоящее время я применяю загрузку к API через
var FnPush = setInterval(function() {
for(i=0;i<1000;i++)
SendMsg(makeMsg(i));
}, 1000);
function SendMsg(msg) {
var post_data = querystring.stringify(msg);
var post_options = {
host: target.host,
port: target.port,
path: target.path,
agent: false,
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': post_data.length,
"connection": "close"
}
};
var post_req = http.request(post_options, function(res) {});
post_req.write(post_data);
post_req.on('error', function(e) {
});
post_req.end();
}
Есть ли у меня результаты, кажущиеся мне разумными? И если это так выразительно более эффективно, чем рестифицировать в этом сценарии? Или есть какая-либо ошибка в том, как я их протестировал?
обновлено в ответ на комментарии
поведение восстановления
-
при загрузке с нагрузкой более 1000 req.s он прекратил обработку всего за 1 секунду до 1015 req.s, а затем ничего не делал. то есть. счетчик i, реализованный для подсчета входящих запросов, остановил приращение после 1015.
-
при подаче с нагрузкой, равной 100 reqs. в секунду он получил до 1015 и после этого не реагировал.