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.
Antworten:
Berichtigung : Diese Information ist jetzt falsch, scrollen Sie weiter!
Dies ist 2015 und ich denke, die Situation hat sich seitdem sehr verändert. Raygun.io hat kürzlich einen Benchmark veröffentlicht, in dem Hapi, Express und Restify verglichen werden .
Es sagt:
Anscheinend ist Restify hier ein Gewinner für einfachere Servicebereitstellungen. Vor allem, wenn Sie einen Service erstellen, der viele Anfragen von denselben Kunden erhält und schnell umziehen möchte. Sie bekommen natürlich viel mehr Geld als nackte Node, da Sie Funktionen wie DTrace-Unterstützung eingebaut haben.
quelle
Dies ist 2017 und der neueste Leistungstest von Raygun.io , bei dem Hapi, Express, Restify und Koa verglichen werden.
Es zeigt, dass Koa schneller ist als andere Frameworks, aber da es bei dieser Frage um Express und Restify geht, ist Express schneller als Restify.
Und es steht in der Post
quelle
Gemäß der Node Knockout-Beschreibung :
Leistungsprobleme und Fehler können wahrscheinlich behoben werden. Vielleicht ist diese Beschreibung eine angemessene Motivation.
quelle
Ich stieß auf ein ähnliches Problem beim Benchmarking mehrerer Frameworks unter OS X über ab. Einige der Stapel starben nach etwa der 1000. Anfrage durchweg.
Ich habe das Limit deutlich überschritten und das Problem ist verschwunden.
Sie können mit ulimit (oder launchctl limit <nur OS X) überprüfen, ob sich Ihre Maxfiles befinden , und sehen, wie hoch das Maximum ist.
Hoffentlich hilft das.
quelle
Ich war verwechselt mit Express oder Restify oder PerfectAPI. Ich habe sogar versucht, in allen ein Modul zu entwickeln. Die Hauptanforderung war die Erstellung eines RESTapi. aber schließlich endete mit Express, testete mich selbst mit der Anfrage pro Sekunde, die auf allen Rahmen gestellt wurde, der Express gab bessere Ergebnisse als andere. Obwohl in einigen Fällen Outshines Express, aber Express-Nähte neu formuliert werden, um das Rennen zu gewinnen. Ich Daumen hoch für Express. Und ja, ich bin auch auf Lokomotiven gestoßen, einige MVC-Frameworks, die auf Express aufbauen. Wenn Sie nach einer vollständigen MVC-App mit Express und Jade suchen, entscheiden Sie sich für eine Lokomotive.
quelle