Eu tinha o requisito de construir uma API REST em node.js e estava procurando uma estrutura mais leve do que express.js, que provavelmente evita os recursos indesejados e funcionaria como uma estrutura customizada para construir APIs REST. Restify de sua introdução é recomendado para o mesmo caso.
Leitura Por que usar restify e not express? parecia que restify é uma boa escolha.
Mas a surpresa veio quando experimentei ambos com carga.
Eu fiz uma API REST de amostra no Restify e a sobrecarreguei com 1000 solicitações por segundo. Surpreendeu-me a rota que começou a não responder depois de um tempo. O mesmo aplicativo criado em express.js tratava de tudo.
Atualmente, estou aplicando a carga à API via
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();
}
Os resultados que obtive parecem razoáveis? E em caso afirmativo, expressar é mais eficiente do que restificar neste cenário? Ou há algum erro na maneira como os testei?
atualizado em resposta aos comentários
comportamento de restificar
quando alimentado com uma carga de mais de 1000 req.s, ele parou de processar em apenas 1 segundo recebendo até 1015 req.s e depois não fez nada. ie. o contador que implementei para contar as solicitações de entrada interrompeu o incremento após 1015.
quando alimentado com uma carga de até 100 reqs. por segundo, ele recebeu até 1015 e não respondeu depois disso.
Respostas:
Correção : esta informação agora está errada, continue rolando!
Estamos em 2015 e acho que a situação mudou muito desde então. Raygun.io postou um benchmark recente comparando hapi, express e restify .
Diz:
Parece que o Restify é um vencedor aqui para facilitar as implantações de serviço. Principalmente se você estiver construindo um serviço que recebe muitas solicitações dos mesmos clientes e quer ser mais rápido. Obviamente, você obtém muito mais rentabilidade do que o Node simples, já que possui recursos como o suporte ao DTrace.
fonte
Isto é 2017 e o teste de desempenho mais tardar até Raygun.io comparando hapi, expresso, restify e Koa.
Isso mostra que Koa é mais rápido que outros frameworks, mas como essa questão é sobre expressar e restificar, Express é mais rápido que restificar.
E está escrito no post
fonte
De acordo com a descrição do nó Knockout :
Problemas de desempenho e bugs provavelmente podem ser corrigidos. Talvez essa descrição seja uma motivação adequada.
fonte
Eu me deparei com um problema semelhante ao comparar vários frameworks no OS X via ab. Algumas das pilhas morreram, de forma consistente, após cerca do milésimo pedido.
Eu ultrapassei o limite significativamente e o problema desapareceu.
Você pode verificar se seus maxfiles estão em com ulimit , (ou launchctl limit <apenas OS X) e ver qual é o máximo.
Espero que ajude.
fonte
eu estava confundido com express or restify ou perfectAPI. até tentei desenvolver um módulo em todos eles. o principal requisito era fazer um RESTapi. mas finalmente acabei com o expresso, testei-me com a requisição por segundo feito em todo o framework, o expresso deu melhor resultado que os outros. Embora em alguns casos reitere o brilho, mas expresse costuras para vencer a corrida. Eu faço um sinal positivo para expresso. E sim, eu também encontrei locomotive js, alguma estrutura MVC construída em cima do express Se alguém procura um aplicativo MVC completo usando expresso e jade, vá para locomotiva.
fonte