Ich verwende Google-Soja-Vorlagen und habe sowohl serverseitige als auch clientseitige Rendering-Lösungen entwickelt. Ich möchte sie mit Leistungstests benchmarken. Beim Benchmarking des clientseitigen Teils möchte ich warten, bis alle JavaScript-Aktionen ausgeführt wurden, um die tatsächliche Antwortzeit zu berechnen.
Ich habe es unten versucht, aber es löst meinen Zweck nicht.
Gibt es andere Rahmen, die ich verwenden kann, um Load-Tests sowie Seiten-Scraping durchzuführen?
Das können Sie mit PhantomJS (und SlimerJS) tun: Erstellen Sie einfach eine neue page
-Instanz für jede Anfrage. Das folgende Skript ist ein vollständiges Beispiel. (Warnung: Es ist ziemlich ausführlich, wenn Ihre Seite viele andere Ressourcen anfordert.) Die Zahl links ist Millisekunden, seit das Skript gestartet wurde.
Auf meinem Rechner zeigt Beispiel.com auf localhost, und der Engpass war Apache. Z.B. Wenn ich mit N = 30 laufe, dauert es ca. 5 Sekunden. Wenn ich es dann sofort erneut ausführe, dauerte es 0,75 Sekunden (weil genügend Apache-Instanzen bereits hochgespielt worden waren). Als ich mit N = 100 probiert habe, hat es ungefähr 12 Sekunden gedauert, und ich habe mein schlechtes Notebook sehr belastet.
Das war genug, um mir zu beweisen, dass das 6-Verbindungslimit eines Browsers nicht getroffen wurde und alle 100 Verbindungen gleichzeitig ausgeführt wurden. Wenn das für Sie immer noch nicht parallel genug ist, verwenden Sie ein Bash-Skript, um beispielsweise 8 Instanzen von PhantomJS zu starten (vorausgesetzt, Sie haben 8 Kerne). HINWEIS: Alle Seiteninstanzen teilen einen Browser-Cache. So sehe ich zum Beispiel eine einzige Anfrage für jQuery.
Das exakt gleiche Skript läuft auf SlimerJS, aber das Verhalten ist ganz anders. Es gibt mehr Overhead beim Starten jeder Instanz, aber es ist wichtiger, dass jeder seinen eigenen Plattencache hat. Also meine Testzeit umfasste 30 Anfragen an das Google CDN für JQuery!
(Wenn PhantomJS so konfiguriert werden kann, dass es keinen Cache freigibt, oder wenn SlimerJS dies kann, sollte es wahrscheinlich eine andere StackOverflow-Frage sein, da ich es nicht aus der Nähe kenne.)
%Vor%Werfen Sie einen Blick auf LoadBooster ( Ссылка ). Es verwendet PhantomJS / CasperJs, um Tests zu verteilen. PhantomJS / CasperJS analysiert und rendert jede Seite und führt das clientseitige Skript aus. Der PhantomJS / CasperJS-Ansatz ist einfacher, Testszenarien zu schreiben, um komplexe AJAX-Web 2.0-Anwendungen zu unterstützen.
Haftungsausschluss: Ich arbeite für LoadBooster.
Tags und Links node.js phantomjs load-testing