У меня было требование создать REST API в node.js, и я искал более легкий фреймворк, чем express.js, который, вероятно, избегал бы нежелательных функций и действовал бы как специально созданный фреймворк для создания REST API. Restify из его вступления рекомендуется для того же случая.
Чтение Почему использовать restify, а не выражать? казалось, что restify - хороший выбор.
Но сюрприз пришел, когда я попробовал оба с нагрузкой.
Я сделал образец REST API на Restify и залил его 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();
}
Кажутся ли мне разумными полученные результаты? И если да, то в этом сценарии экспресс более эффективен, чем restify? Или есть ошибка в том, как я их тестировал?
обновлено в ответ на комментарии
поведение restify
при загрузке более 1000 запросов он прекращал обработку всего за 1 секунду, получая до 1015 запросов, а затем ничего не делал. т.е. счетчик, который я реализовал для подсчета входящих запросов, остановился после 1015.
при кормлении с нагрузкой даже 100 треб. в секунду он получил до 1015 и после этого перестал отвечать.