J'avais l'obligation de créer une API REST dans node.js et je recherchais un cadre plus léger qu'express.js qui évite probablement les fonctionnalités indésirables et agirait comme un cadre personnalisé pour la création d'API REST. Restify de son intro est recommandé pour le même cas.
Lecture Pourquoi utiliser restify et non express? semblait que restify est un bon choix.
Mais la surprise est venue quand j'ai essayé les deux avec une charge.
J'ai créé un exemple d'API REST sur Restify et l'ai inondé de 1000 requêtes par seconde. Surprise pour moi, l'itinéraire a commencé à ne pas répondre après un certain temps. La même application basée sur express.js a tout géré.
J'applique actuellement la charge à l'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();
}
Les résultats que j'ai obtenus semblent-ils raisonnables? Et si tel est le cas, est-il plus efficace d'exprimer que de restifier dans ce scénario? Ou y a-t-il une erreur dans la façon dont je les ai testés?
mis à jour en réponse aux commentaires
comportement de restify
lorsqu'il était alimenté avec une charge de plus de 1000 demandes, il a arrêté le traitement en seulement 1 seconde, recevant jusqu'à 1015 demandes et ne faisait plus rien. c'est à dire. le compteur i implémenté pour compter les requêtes entrantes s'est arrêté incrémenté après 1015.
lorsqu'il est alimenté avec une charge de 100 reqs. par seconde, il a reçu jusqu'à 10 h 15 et est devenu non réactif après cela.
Réponses:
Rectificatif : cette information est désormais erronée, continuez à faire défiler!
Nous sommes en 2015 et je pense que la situation a beaucoup changé depuis. Raygun.io a publié un récent benchmark comparant hapi, express et restify .
Ça dit:
On dirait que Restify est un gagnant ici pour des déploiements de services plus faciles. Surtout si vous créez un service qui reçoit de nombreuses demandes des mêmes clients et que vous souhaitez agir rapidement. Bien sûr, vous en avez beaucoup plus pour votre argent que Node nu puisque vous avez des fonctionnalités telles que le support DTrace intégré.
la source
Il s'agit de 2017 et du dernier test de performance de Raygun.io comparant hapi, express, restify et Koa.
Cela montre que Koa est plus rapide que les autres frameworks, mais comme cette question concerne express et restify, Express est plus rapide que restify.
Et c'est écrit dans le post
la source
Selon la description de Node Knockout :
Les problèmes de performances et les bogues peuvent probablement être corrigés. Peut-être que cette description sera une motivation adéquate.
la source
J'ai rencontré un problème similaire en comparant plusieurs frameworks sur OS X via ab. Certaines piles sont mortes, systématiquement, après environ la 1000e demande.
J'ai considérablement dépassé la limite et le problème a disparu.
Vous pouvez vérifier votre maxfiles avec ulimit , (ou launchctl limit <OS X uniquement) et voir quel est le maximum.
J'espère que cela pourra aider.
la source
j'ai été confondu avec express ou restify ou perfectAPI. même essayé de développer un module dans chacun d'eux. la principale exigence était de faire un RESTapi. mais finalement fini avec express, testé moi-même avec la demande par seconde faite sur tout le framework, l'express a donné un meilleur résultat que d'autres. Bien que dans certains cas, il restitue des coutures expresses mais expresses pour gagner la course. Je tiens à exprimer. Et oui, je suis également tombé sur locomotive js, un cadre MVC construit sur express. Si vous recherchez une application MVC complète utilisant express et jade, optez pour la locomotive.
la source