Tenía el requisito de crear una API REST en node.js y estaba buscando un marco más liviano que express.js que probablemente evita las características no deseadas y actúa como un marco personalizado para construir API REST. Se recomienda Restify de su intro para el mismo caso.
Lectura ¿Por qué usar restify y no express? parecía que restify es una buena opción.
Pero la sorpresa vino cuando probé ambos con una carga.
Hice una API REST de muestra en Restify y la inundé con 1000 solicitudes por segundo. Para mi sorpresa, la ruta comenzó a no responder después de un tiempo. La misma aplicación construida en express.js manejó todo.
Actualmente estoy aplicando la carga a la API a través de
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();
}
¿Los resultados que obtuve parecen razonables? Y si es así, ¿es más eficiente express que restify en este escenario? ¿O hay algún error en la forma en que los probé?
actualizado en respuesta a los comentarios
comportamiento de restify
cuando se alimenta con una carga de más de 1000 solicitudes, deja de procesar en solo 1 segundo, recibe hasta 1015 solicitudes y luego no hace nada. es decir. el contador que implementé para contar las solicitudes entrantes detuvo el incremento después de 1015.
cuando se alimenta con una carga de incluso 100 reqs. por segundo recibió hasta 1015 y dejó de responder después de eso.
Respuestas:
Corrección : esta información ahora es incorrecta, ¡sigue desplazándote!
Estamos en 2015 y creo que la situación ha cambiado mucho desde entonces. Raygun.io ha publicado un punto de referencia reciente que compara hapi, express y restify .
Dice:
Parece que Restify es un ganador aquí para implementaciones de servicios más fáciles. Especialmente si está creando un servicio que recibe muchas solicitudes de los mismos clientes y desea moverse rápidamente. Por supuesto, obtienes mucho más por tu dinero que un Node desnudo, ya que tienes funciones como la compatibilidad con DTrace incorporadas.
fuente
Esta es 2017 y la última prueba de rendimiento por Raygun.io comparando HAPI, expresar, restify y Coa.
Muestra que Koa es más rápido que otros marcos, pero como esta pregunta se trata de express y restify, Express es más rápido que restify.
Y esta escrito en el post
fuente
Según la descripción de Node Knockout :
Los problemas de rendimiento y los errores probablemente se puedan solucionar. Quizás esa descripción sea una motivación adecuada.
fuente
Me encontré con un problema similar al comparar varios marcos en OS X a través de ab. Algunas de las pilas murieron, de manera constante, después de aproximadamente la solicitud número 1000.
Superé el límite de manera significativa y el problema desapareció.
Puede verificar que su maxfiles está en con ulimit , (o launchctl limit <solo OS X) y ver cuál es el máximo.
Espero que ayude.
fuente
Me confundieron con express o restify o perfectAPI. incluso intenté desarrollar un módulo en todos ellos. el principal requisito era hacer un RESTapi. pero finalmente terminé con express, me probé con la solicitud por segundo realizada en todo el marco, el express dio mejor resultado que otros. Aunque en algunos casos restify eclipsa express pero express costuras para ganar la carrera. Doy un pulgar hacia arriba por expreso. Y sí, también me encontré con locomotora js, un marco MVC construido sobre express. Si alguien busca una aplicación MVC completa que use express y jade, busque locomotora.
fuente