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.