Leistungstest mit PhantomJS

8

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.

  • PhantomJS unterstützt den Zugriff auf eine einzelne Seite und die Abfrage erforderlicher Informationen auf der Seite, bietet jedoch keine Option zur Simulation der gleichzeitigen Verbindungen
  • Nodeload , bietet die Möglichkeit, einen Server zu laden, hat aber keine Möglichkeit, die Informationen von der Seite abzurufen.

Gibt es andere Rahmen, die ich verwenden kann, um Load-Tests sowie Seiten-Scraping durchzuführen?

    
Sriharsha 07.05.2013, 16:02
quelle

2 Antworten

11

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%     
Darren Cook 08.11.2013 02:02
quelle
0

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.

    
QingHai 10.04.2017 06:07
quelle

Tags und Links