ab Belastungstest
Kann jemand bitte gehen mir durch den Prozess, wie kann ich Last-test meiner website mit apache bench-tool (ab
)?
Möchte ich Folgendes wissen:
, Wie viele Personen pro minute die Seite behandeln?
Bitte gehen mir durch die Befehle, die ich ausführen sollten, um dies herauszufinden.
Ich versucht, jedes tutorial, und Sie sind verwirrend.
InformationsquelleAutor der Frage jewelwast | 2012-10-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem apache-benchmark-tool ist sehr einfach, und während es wird Ihnen eine solide Vorstellung von performance, es ist eine schlechte Idee, nur von ihm abhängen, wenn Sie planen, um Ihre Website ausgesetzt, die zu schweren stress in der Produktion.
Having said that, hier ist die häufigste und einfachste Parameter:
-c
: ("Parallelität"). Gibt an, wie viele clients (die Menschen/Nutzer) auf der Website an der gleichen Zeit. Währendab
läuft, wird es-c
Kunden rufen die Website auf. Dies ist, was tatsächlich entscheidet die Menge der stress, Ihre Website wird leiden, während der benchmark.-n
: Zeigt an, wie viele Anfragen vorgenommen werden. Nur dieses entscheidet über die Länge der benchmark. Eine hohe-n
Wert mit einem-c
Wert, dass Ihr server unterstützen kann, ist eine gute Idee, um sicherzustellen, dass die Dinge nicht brechen unter anhaltendem stress: es ist nicht das gleiche, support stress für 5 Sekunden für 5 Stunden.-k
: Dies ist die "KeepAlive" Funktionalität Browsern nicht von Natur aus. Sie nicht brauchen, um geben Sie den Wert für-k
wie es "boolean" (Bedeutung: es zeigt an, dass Sie den Wunsch für Ihre Tests zu verwenden, die Keep-Alive-header von HTTP und Aufrechterhaltung der Verbindung). Da ein Browser tun dies, und Sie sind wahrscheinlich zu wollen, um zu simulieren, stress und flow, dass Ihre Website aus dem Browser, ist es empfehlenswert, Sie machen einen benchmark mit dieser.Das Letzte argument, das ist einfach der host. Standardmäßig wird es Treffer http://- Protokoll, wenn Sie nicht angeben, es.
Durch die Ausgabe des obigen Befehls, Sie werden schlagen http://example.com/ mit 350 gleichzeitige verbindungen bis zu 20 tausend Anforderungen erfüllt sind. Es wird mit Hilfe der keep-alive-header.
Nachdem der Prozess abgeschlossen ist, werden die 20 tausend Anfragen, erhalten Sie feedback zu stats. Dies wird Ihnen sagen, wie gut die Seite durchgeführt, die unter dem stress, den Sie sagen, wenn Sie mit den oben genannten Parametern.
Herausfinden, wie viele Menschen die Website verarbeiten kann, zur gleichen Zeit, nur sehen, wenn die response-Zeiten (Mittel -, min-und max-Antwortzeiten, fehlgeschlagene Anfragen, etc.) sind zahlen, die Ihre Website akzeptieren können (verschiedene Standorte könnten Wunsch verschiedene Geschwindigkeiten). Sie können das tool ausführen, mit verschiedenen -c-Werte, bis Sie auf die Stelle, wo Sie sagen: "Wenn ich erhöhe, es beginnt um Anforderungen, die fehlgeschlagen sind, und es bricht".
Je nach Ihrer website, Sie erwarten eine Durchschnittliche Anzahl der Anfragen pro minute. Diese variiert so viel, werden Sie nicht in der Lage sein, um das zu simulieren mit ab. Aber denken Sie an es auf diese Weise: Wenn Ihr Durchschnittlicher Benutzer wird auf 5 Anfragen pro minute und die Durchschnittliche Reaktionszeit, die Sie finden, die gültig ist 2 Sekunden, das bedeutet, dass 10 Sekunden in einer minute für 1 Benutzer auf Anfragen, was bedeutet, dass nur 1/6 der Zeit, die es auf der Website. Dies bedeutet auch, dass, wenn Sie haben 6 Nutzer rufen die Website mit ab gleichzeitig, sind Sie wahrscheinlich zu haben, 36 Benutzer in der simulation, auch wenn Ihr concurrency-level (-c) ist nur 6.
Dies hängt von dem Verhalten, das Sie erwarten, von Ihren Benutzern mit der Website, aber Sie können es aus "ich erwarte, dass meine Benutzer-schlagen X Anfragen pro minute und ich halte eine Durchschnittliche Antwortzeit gültig, wenn Sie 2 Sekunden". Dann ändern Sie einfach Ihr -c-Ebene, bis Sie auf 2 Sekunden Durchschnittliche Antwortzeit (aber stellen Sie sicher, dass die max response time und stddev noch gültig ist) und sehen, wie groß Sie können make-c.
Ich hoffe, ich erklärte klar 🙂 viel Glück
InformationsquelleAutor der Antwort Mamsaac
Den einfachsten test, den Sie tun können, ist die Durchführung von 1000 Anfragen, 10 in einer Zeit, (die in etwa simuliert 10 gleichzeitige Benutzer erste 100 Seiten - jeweils über die Länge des Tests).
-n 1000
ist die Anzahl der Anfragen zu stellen.-c 10
sagt AB zu 10 Anfragen gleichzeitig, anstelle von 1-Anforderung zu einer Zeit, besser zu simulieren gleichzeitige Besucher (vs. sequentielle Besucher).-k
sendet dieKeepAlive
header, der fragt, der web-server nicht heruntergefahren werden, die Verbindung nach jeder Anfrage erfolgt, aber stattdessen halten Sie wiederverwenden.Ich bin auch der Versand der extra-header
Accept-Encoding: gzip, deflate
weil mod_deflate ist fast immer verwendet, um zu komprimieren Sie den text/html-Ausgabe 25%-75% - die Auswirkungen sollten nicht entlassen werden, da es Auswirkungen auf die Gesamtleistung des web-Servers (D. H., übertragen kann 2x die Daten in der gleichen Zeit, etc).Ergebnisse:
Für die einfachste interpretation ist, alles ignorieren, ABER diese Zeile:
Multiplizieren Sie, dass durch 60, und Sie haben Ihren Anfragen pro minute.
Um Reale Ergebnisse, Sie werden wollen um zu testen, WordPress anstelle von ein paar statischen HTML-oder index.php Datei, weil Sie brauchen, um zu wissen, wie alles führt zusammen: darunter auch komplexe PHP-code, und mehrere MySQL-Abfragen...
Wird hier z.B. die Ergebnisse von Tests einer frischen Installation von WordPress auf dem gleichen system und WAMP-Umgebung (ich bin mit WampDeveloper, aber es gibt auch Xampp, WampServer, und andere)...
, 37x langsamer jetzt!
Nach dem laden testen, es gibt eine Menge Dinge, die Sie tun können, um die gesamte Leistungsfähigkeit zu steigern (Requests Pro Sekunde), und auch der web-server mehr stabil unter größere Last (z.B. Erhöhung der
-n
und die-c
neigt zu Abstürzen von Apache), das Sie hier nachlesen können:Load Testing Apache mit AB (Apache Bench)
InformationsquelleAutor der Antwort rightstuff
Schritte zum einrichten von Apache Bench(AB) auf windows (IMO - Empfohlen).
Schritt 1 - Installieren Sie Xampp.
Schritt 2 - Öffnen den Befehl CMD ein.
Schritt 3 - Gehen Sie auf die apache-bench Ziel (
cd C:\xampp\apache\bin
) von CMDSchritt 4 - Einfügen der Befehl (
ab -n 100 -c 10 -k -H "Accept-Encoding: gzip, deflate" http://localhost:yourport/
)Schritt 5 - Warten Sie, bis es. Fertig
InformationsquelleAutor der Antwort Charitha Goonewardena
Laden testen Ihrer API einfach mit den ab ist nicht genug. Ich denke aber, es ist ein großartiges Werkzeug, um Ihnen eine grundlegende Idee, wie Ihre Website ist performant.
Wenn Sie möchten, verwenden Sie die ab-Befehl zu testen, mehrere API-Endpunkte, mit verschiedenen Daten, die alle zur gleichen Zeit im hintergrund, Sie müssen verwenden Sie "nohup" Befehl. Es führt jeden Befehl, auch wenn Sie in der Nähe des Terminals.
Schrieb ich ein einfaches Skript, das automatisiert den gesamten Prozess, fühlen Sie sich frei, es zu benutzen: http://blog.ikvasnica.com/entry/load-test-multiple-api-endpoints-concurrently-use-this-simple-shell-script
InformationsquelleAutor der Antwort Ivan Kvasnica