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.