Ich musste eine REST-API in node.js erstellen und suchte nach einem leichteren Framework als express.js, das wahrscheinlich die unerwünschten Funktionen vermeidet und sich wie ein benutzerdefiniertes Framework zum Erstellen von REST-APIs verhält. Für denselben Fall wird empfohlen, das Intro zu wiederholen.
Lesen Warum restify verwenden und nicht ausdrücken? schien zu restifizieren ist eine gute Wahl.
Aber die Überraschung kam, als ich beide mit einer Ladung ausprobierte.
Ich habe eine Beispiel-REST-API für Restify erstellt und sie mit 1000 Anforderungen pro Sekunde überflutet. Überraschung für mich, dass die Route nach einer Weile nicht mehr reagierte. Die gleiche App, die auf express.js basiert, hat alle erledigt.
Ich wende derzeit die Last auf API über an
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();
}
Sind die Ergebnisse, die ich erzielt habe, vernünftig? Und wenn ja, ist Express in diesem Szenario effizienter als Restify? Oder gibt es einen Fehler in der Art, wie ich sie getestet habe?
als Antwort auf Kommentare aktualisiert
Verhalten von restify
Wenn es mit einer Last von mehr als 1000 Anforderungen gespeist wurde, stoppte es die Verarbeitung in nur 1 Sekunde, erhielt bis 1015 Anforderungen und tat dann nichts. dh. Der Zähler, den ich zum Zählen eingehender Anforderungen implementiert habe, stoppte das Inkrement nach 1015.
wenn mit einer Last von sogar 100 reqs gespeist. pro Sekunde erhielt es bis 1015 und reagierte danach nicht mehr.