Benchmarking einer Website mit Firefox, Siege und Sproxy unter Ubuntu 16.04

Einführung

Siege ist ein konfigurierbares Benchmarking- und Testtool für Websites, mit dem Webserver durch Anforderung von Webseiten getestet werden. Die Anzahl der Seiten pro Sekunde, die Siege anfordert, kann auf einen Wert zwischen einigen Seiten pro Sekunde und der maximalen Anzahl festgelegt werden, die die Website verarbeiten kann.

Diese Informationen sind äußerst nützlich, um Leistungsengpässe zu erkennen, indem hervorgehoben wird, welche Serverressource zuerst erschöpft ist und auf welcher Datenverkehrsstufe. Mit diesen Informationen können Sie Änderungen an der Serverkonfiguration vornehmen oder die Serverhardware aktualisieren, bevor eine Live-Site ausfällt. Darüber hinaus können gängige Systemverwaltungsverfahren, wie z. B. Sicherungen, unter einer simulierten Last getestet werden, um deren Auswirkungen auf die Website-Leistung zu bestimmen.

In diesem Handbuch werden wir Siege so installieren und konfigurieren, dass es im Benchmarking- und Browsermodus ausgeführt wird. Der Benchmarking-Modus stellt so viele Anforderungen, wie der Webserver verarbeiten kann, und der Browsing-Modus simuliert eine konfigurierbare Anzahl von Besuchern der Website.

Da die Konfiguration einer Internetverbindung, die über einen Proxyserver ausgeführt wird, mit Firefox besonders einfach ist, stellen wir über den Proxyserver Sproxy eine Verbindung zum Internet her. Sproxy, das speziell für die Zusammenarbeit mit Siege erstellt wurde, zeichnet die URL jeder Anforderung auf, die an eine Datei weitergeleitet wird. Wir werden diese Datei verwenden, um Siege mitzuteilen, gegen welche URLs getestet werden soll.

Im ersten Teil dieses Tutorials werden wir Sproxy installieren und Firefox so konfigurieren, dass eine Verbindung zum Internet hergestellt wird. Von dort aus werden wir eine Liste von URLs generieren, gegen die Siege getestet werden soll, und schließlich werden wir die Testergebnisse untersuchen und Leistungsengpässe identifizieren.

Voraussetzungen

Um dieses Tutorial abzuschließen, benötigen Sie:

  • Ein Ubuntu 16.04-Server, der unter https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-16-04 eingerichtet wurde, wird in diesem Ubuntu 16.04-Tutorial für die Erstinstallation des Servers beschrieben. Root-Benutzer und eine Firewall. Stellen Sie sicher, dass Sie den Port "+ 8080 " im Link öffnen: # step-7-% E2% 80% 94-understanding-siege's-results [Step 7] des Lernprogramms zur Ersteinrichtung des Servers mit dem Befehl " sudo ufw allow 8080+" `. Dies ist der Port, den Sproxy standardmäßig überwacht.

  • Firefox installiert. Wenn Sie MacOS oder Windows auf Ihrem lokalen Computer verwenden, sollten Sie die Installationsdatei von der official Mozilla website herunterladen. Wenn Sie Linux verwenden, sollten Sie Ihren Paketmanager verwenden oder die offiziellen Anweisungen von Mozilla befolgen, um Firefox zu installieren. Dieses Tutorial enthält Anweisungen zum Arbeiten mit Firefox Version 56.

  • Eine Website, die Sie besitzen oder die Sie testen dürfen und die entweder öffentlich verfügbar ist oder die Sie von dem Server aus, auf dem Sie Siege installieren, zugänglich machen können.

Schritt 1 - Sproxy erstellen und installieren

Sproxy ist nicht als vorgefertigtes Binärpaket erhältlich. Sie müssen es daher von der offiziellen Website herunterladen und dann aus dem Quellcode erstellen.

Da der Erstellungsprozess von Sproxy auf Tools basiert, die nicht standardmäßig auf Ubuntu installiert sind, müssen Sie einige zusätzliche Pakete installieren.

Aktualisieren Sie zunächst Ihre Paketliste, um sicherzustellen, dass Sie die neueste Version jedes zusätzlichen Pakets erhalten.

sudo apt-get update

Installieren Sie dann die Pakete.

sudo apt-get install build-essential libnet-ssleay-perl liburi-perl libwww-perl

+ build-essential + bietet allgemeine Bibliotheken und Tools, die zum Erstellen von Software auf Debian-basierten Linux-Distributionen erforderlich sind, während + libnet-ssleay-perl +, + liburi-perl + und + libwww-perl + Bibliotheken sind für die Programmiersprache Perl, von der Sproxy abhängig ist, um Verbindungen über SSL herzustellen, URI-Zeichenfolgen zu bearbeiten und eine Schnittstelle zum World Wide Web herzustellen.

Wechseln Sie nun in Ihr Home-Verzeichnis und laden Sie das Sproxy-Quellcode-Archiv von der offiziellen Website herunter.

cd ~
curl -O http://download.joedog.org/sproxy/sproxy-latest.tar.gz

Erstellen Sie dann ein Verzeichnis mit dem Namen "+ sproxy +", um Sproxy einzubauen, und entpacken Sie das Quellcode-Archiv in das neue Verzeichnis.

mkdir sproxy
tar -zxf sproxy-latest.tar.gz --strip-components=1 --directory="sproxy"

Hier weist die Option "+ -zxf " tar an, " gunzip " und den Inhalt der Datei " sproxy-latest.tar.gz " zu extrahieren. Die Option " - strip-components = 1 " entfernt die erste führende Komponente von jedem Dateinamen. Dadurch wird das Archiv in das Verzeichnis " sproxy " entpackt, das mit der Option " - directory " angegeben wurde, und nicht in das Verzeichnis " sproxy- / sproxy / +".

Wechseln Sie nun in das Verzeichnis "+ sproxy ", um Sproxy mit den Befehlen " configure " und " make +" zu erstellen und zu installieren.

cd sproxy
./configure
make
sudo make install

Der Befehl +. / Configure + überprüft, ob alle erforderlichen Programmabhängigkeiten und Build-Tools auf dem System vorhanden sind. Der Befehl + make + erstellt dann die Programm-Binärdateien. Schließlich kopiert der Befehl + make install + die neuen Binärdateien an die richtigen Positionen auf dem Server. Da Sproxy ein neues Verzeichnis unter "+ / usr / local / lib / sproxy / JoeDog " erstellt, müssen Sie " make install +" mit Root-Rechten ausführen.

Testen Sie abschließend, ob Sproxy ordnungsgemäß funktioniert, indem Sie in Ihr Ausgangsverzeichnis zurückkehren und Sproxy im ausführlichen Modus mit der Option "+ -v +" starten.

cd ~
sproxy -v

Die Ausgabe informiert Sie über den Port, an dem Sproxy empfangsbereit ist, den Speicherort der Datei, in die Sproxy die Ausgabe schreibt, und die Anzahl der Sekunden, die Sproxy auf eine Antwort von einem Remote-Host wartet.

Sproxy OutputSPROXY v1.02 listening on port 9001
...appending HTTP requests to: /user/urls.txt
...default connection timeout: 120 seconds

Wenn Sproxy nicht gestartet werden kann, überprüfen Sie die Nachrichten in Ihrem Terminal auf Informationen darüber, was schief gelaufen ist.

Wenn Sie überprüft haben, dass alles funktioniert, beenden Sie Sproxy mit "+ STRG + C +".

Sproxy ist jetzt einsatzbereit. Ändern Sie Firefox so, dass über Sproxy eine Verbindung zum Internet hergestellt wird, um eine Liste der URLs zu erstellen, die mit Siege verglichen werden können.

Schritt 2 - Firefox für die Verwendung von Sproxy konfigurieren

Wir werden nun die Netzwerkkonfiguration von Firefox so ändern, dass alle Webanforderungen über den Sproxy gesendet werden. Dabei wird die Liste der Benchmarking-Ziele erstellt, die wir für Siege benötigen.

Da Sproxy jede besuchte URL aufzeichnen soll, löschen wir auch den lokalen Web-Cache von Firefox. Der Web-Cache ist ein lokaler Speicher für Bilder und andere statische Inhalte von Websites, die Firefox bereits besucht hat. Standardmäßig fordert Firefox bereits zwischengespeicherte Website-Assets nicht erneut an.

Ändern der Netzwerkeinstellungen

Ändern Sie zunächst die * Netzwerkproxy * -Einstellungen auf der Registerkarte * Allgemein * im Hauptbildschirm * Einstellungen * von Firefox.

  1. Öffnen Sie Firefox. (Dieses Tutorial enthält Anweisungen für * Firefox Version 56 *. Weitere Versionen finden Sie unter Firefoxs offizielle Supportdokumentation.)

  2. Klicken Sie auf das Hamburger-Menü in der oberen rechten Ecke des Bildschirms und wählen Sie * Einstellungen *, um zum Bildschirm * Allgemein * zu gelangen.

  3. Scrollen Sie zum Ende der Seite und suchen Sie den Abschnitt * Network Proxy *.

  4. Klicken Sie auf die Schaltfläche * Einstellungen… *, um das Fenster * Verbindungseinstellungen * zu öffnen.

image: http: //assets.digitalocean.com/articles/benchmarking-with-siege/firefox-network-proxy.png [Abbildung mit der Schaltfläche zum Auswählen der Proxy-Einstellungen]

Konfigurieren Sie in dieser Anzeige Firefox so, dass alle Anforderungen über den Proxyserver weitergeleitet werden, den Sie unter folgendem Link installiert haben: # step-1-% E2% 80% 94-building-and-installation-sproxy [Schritt 1].

  1. Wählen Sie * Manuelle Proxy-Konfiguration *.

  2. Geben Sie die öffentliche IP-Adresse Ihres Sproxyservers in das Feld * HTTP-Proxy * ein.

  3. Stellen Sie die Portnummer im Feld * Port * auf + 8080 + ein.

  4. Klicken Sie auf * OK *, um die Änderungen zu speichern.

image: http: //assets.digitalocean.com/articles/benchmarking-with-siege/firefox-connection-settings.png [Abbildung zeigt das Verbindungseinstellungsfeld von Firefox mit ausgefüllten Feldern]

Sie haben Firefox jetzt für die Verwendung Ihres Sproxy-HTTP-Proxyservers konfiguriert, sodass Sie den lokalen Cache leeren können.

Löschen des lokalen Caches

Firefox bezeichnet den lokalen Cache als * Offline-Webinhalt *. Es befindet sich im Abschnitt * Datenschutz und Sicherheit * des Firefox-Bildschirms * Einstellungen *.

  1. Klicken Sie auf das Hamburger-Menü in der oberen rechten Ecke des Bildschirms und wählen Sie * Einstellungen *, um zum Bildschirm * Allgemein * zu gelangen.

  2. Klicken Sie auf der linken Seite des Bildschirms auf * Datenschutz & Sicherheit *.

  3. Scrollen Sie zum Ende der Seite, suchen Sie den Abschnitt * Offline-Webinhalte und Benutzerdaten * und klicken Sie auf die Schaltfläche * Jetzt löschen *.

image: http: //assets.digitalocean.com/articles/benchmarking-with-siege/firefox-offline-web-content.png [Bild mit der Schaltfläche zum Löschen des Caches]

Ihr Webcache ist jetzt leer, sodass die Adresse jedes HTTP-basierten Website-Assets, auf das Firefox stößt, an Sproxy übergeben wird, bis dieses Asset erneut zwischengespeichert wird.

Testen der Konfiguration

Firefox ist jetzt so konfiguriert, dass alle HTTP-basierten Anforderungen über Sproxy weitergeleitet werden. Sie haben Sproxy jedoch mit "+ STRG + C +" am Ende des Links gestoppt: # step-1-% E2% 80% 94-building-and-installation-sproxy [Schritt 1]. Daher wird eine Fehlerseite angezeigt, wenn Sie versuchen, eine Website über eine HTTP-Verbindung mit Firefox zu besuchen.

image: http: //assets.digitalocean.com/articles/benchmarking-with-siege/firefox-refusing-connections.png [Bild mit einer Firefox-Fehlermeldung]

Wenn diese Fehlermeldung nicht angezeigt wird, überprüfen Sie, ob Ihre Firefox-Einstellungen mit den vorherigen Screenshots übereinstimmen, und stellen Sie sicher, dass Sie über HTTPS keine Verbindung zur Website herstellen.

Wenn Sie Firefox wieder normal verwenden möchten, verfolgen Sie die vorherigen Anweisungen für den Link erneut: # step-2-% E2% 80% 94-firefox-to-use-sproxy konfigurieren [Ändern der Netzwerkeinstellungen], aber dieses Mal Wählen Sie die Option * Kein Proxy * in der Anzeige * Verbindungseinstellungen *.

Nachdem wir Firefox für die Verbindung mit dem Internet über Sproxy konfiguriert haben, können wir eine Liste von URLs erstellen, indem wir Sproxy starten und die Zielwebsite mit Firefox durchsuchen.

Schritt 3 - Starten von Sproxy und Generieren einer URL-Liste

In diesem Schritt starten wir den Sproxy-Server und durchsuchen die Ziel-Website mit Firefox. Sproxy zeichnet jede HTTP-basierte URL, die Firefox anfordert, in einer Datei auf, die wir später mit Siege verwenden werden.

Wechseln Sie zunächst in Ihr Home-Verzeichnis und starten Sie Sproxy.

cd ~
sproxy -v -t 180 -p 8080 -o mixed-urls.txt
  • + -v + druckt die an das Terminal angeforderten URLs.

  • "+ -t +" ist die Anzahl der Sekunden, die Sproxy auf eine Antwort von einem Remote-Host wartet.

  • + -p + ist der Port, an dem Sproxy empfangsbereit ist.

  • + -o + ist die Datei, in die Sproxy die URLs schreibt.

  • ++ ist die IP-Adresse, an die Sproxy bindet.

Die Ausgabe informiert Sie sofort über die von Ihnen ausgeführte Sproxy-Version, den Port, auf dem Sproxy empfangsbereit ist, die Datei, in die Sproxy URLs schreibt, und die Zeit, die Sproxy auf die Antwort eines Remote-Hosts wartet. Sobald Sie mit dem Browsen auf der Test-Website beginnen, enthält die Ausgabe auch die URLs der Webseiten, die Sproxy aufzeichnet.

Sproxy OutputSPROXY v1.02 listening on port 8080
...appending HTTP requests to: mixed-urls.txt
...default connection timeout: 180 seconds
http:///
http:///index.html
http:///about.html

Kehren Sie nach dem Start von Sproxy zu Firefox zurück und durchsuchen Sie die Zielsite. Sproxy schreibt jede URL, die Firefox anfordert, in die Datei "+ mixed-urls.txt +" und druckt gleichzeitig die URLs auf das Terminal.

Wenn Sie alle Webseiten besucht haben, die Sie testen möchten, beenden Sie Sproxy mit STRG + C +.

Sie haben jetzt eine Liste in der Datei "+ mixed-urls.txt +" aller HTTP-basierten URLs, auf die Firefox auf der Test-Website gestoßen ist. Im nächsten Schritt entfernen Sie alle URLs, die nicht in Ihre Website aufgelöst werden, um sicherzustellen, dass Sie Siege nur für autorisierte Domains verwenden.

Schritt 4 - Bereinigen der URL-Datei

Moderne Websites hosten häufig Inhalte an mehr als einem Ort. Bei diesen Inhalten kann es sich um Bilder handeln, die in einem Content Delivery Network (CDN) gehostet werden, oder um Schriftarten, die in einem Drittanbieter-Service wie Google gehostet werden. Wenn wir Siege ausführen, möchten wir sicherstellen, dass wir nur Domänen vergleichen, für die wir die Berechtigung zum Testen haben. Daher müssen wir alle URLs in der Datei "+ mixed-urls.txt +" entfernen, die nicht auf die Zielwebsite verweisen.

Verwenden Sie grep, ein Dienstprogramm zum Suchen von Klartexteingaben nach benutzer- angegeben https://www.digitalocean.com/community/tutorials/an-einführung-zu-regelmäßigen-ausdrückenanasregelmäßige Ausdrücke], um nur die URLs zu finden, die Ihrer Testdomain und https://www.digitalocean.com/ entsprechen community / tutorials / eine-einführung-in-linux-io-umleitung # stream-umleitung [umleitung der ergebnisse] in eine neue datei mit dem namen + urls.txt +.

grep -a "^http://" mixed-urls.txt > urls.txt

Das + -a + Flag weist grep an, eine Binärdatei wie eine Textdatei zu behandeln. Dies ist notwendig, da Browser manchmal POST-Anfragen stellen, die Binärdaten enthalten, die Sproxy dann in die Datei "+ mixed-urls.txt " schreibt. Wenn die Datei " mixed-urls.txt " Binärdaten enthält, schlägt grep ohne das Flag " -a +" fehl.

In regulären Ausdrücken bedeutet das Zeichen "+ ^ ", dass Zeichenfolgen mit " http: // +" beginnen müssen, um als Übereinstimmung angesehen zu werden.

Dieser Befehl erzeugt keine Ausgabe im Terminal, sondern erstellt eine neue Datei mit dem Namen "+ urls.txt +".

Öffnen Sie nun "+ urls.txt +", um sicherzustellen, dass jede Zeile mit dem Domain-Namen Ihrer Test-Website beginnt, und löschen Sie alle Zeilen, die dies nicht tun.

nano urls.txt

Speichern Sie Ihre Änderungen und schließen Sie die Datei, wenn Sie mit der Bearbeitung fertig sind.

Ihre URL-Liste enthält jetzt nur die URLs, zu deren Testen Sie berechtigt sind. Wir können Siege jetzt installieren. Wenn Sie Ihre Website auch über HTTPS bewerten möchten, befolgen Sie die optionalen Anweisungen im Link: # step-5-% E2% 80% 94-erstelle-eine-https-url-datei- (optional) [Schritt 5] zum Erstellen eine zweite URL-Datei, die HTTPS-Versionen Ihrer URLs enthält.

Schritt 5 - Erstellen einer HTTPS-URL-Datei (optional)

Viele Websites werden sowohl über HTTP als auch über HTTPS oder sogar ausschließlich über HTTPS ausgeführt. Daher ist es wichtig, dass Sie Ihre Website auch über HTTPS vergleichen können. Das kann Siege. Sie müssen ihm nur eine Liste von URLs geben, die mit "+ https +" beginnen.

Öffnen Sie zunächst mit dem Befehl + cat + die Datei + urls.txt + und übergeben Sie ihren Inhalt an sed, ein Dienstprogramm zum Parsen und Transformieren von Text. sed ersetzt alle Instanzen von "+ http" durch "+ https" und zeigt die Ergebnisse im Terminal an.

cat urls.txt | sed 's|http|https|'

Die Ausgabe ist dieselbe Liste von URLs, die Sie bereits in der Datei "+ urls.txt " haben, mit der Ausnahme, dass jede der ausgegebenen URLs mit " https +" beginnt.

Example Output:///
:///index.html
:///about.html

Nachdem Sie die Ausgabe überprüft haben, führen Sie den Befehl erneut aus, und schreiben Sie die Ausgabe in eine neue Datei mit dem Namen "+ urls-https.txt +".

cat urls.txt | sed 's|http|https|'

Dieser Befehl erzeugt keine Ausgabe auf dem Terminal, da alles in "+ urls-https.txt +" umgeleitet wurde.

Nachdem wir die aktualisierte URL-Liste haben, können wir Siege installieren und mit dem Testen beginnen.

Schritt 6 - Benchmarking und Testen mit Belagerung

Bevor Sie mit dem Testen Ihrer Website beginnen können, müssen Sie Siege zuerst installieren.

Siege ist in den Standard-Ubuntu-Paket-Repositories verfügbar, um es mit + apt-get zu installieren.

sudo apt-get install siege

Siege hat zwei Betriebsarten: Internet und Benchmark. Der Internet-Modus simuliert das Surfen von Besuchern auf der Ziel-Website, während der Benchmark-Modus Anfragen so schnell bearbeitet, wie der Webserver dies kann. Wir werden Siege zuerst im Internet-Modus ausführen.

Der Internet-Modus ist gut geeignet, um die Serverlast langsam aufzubauen, indem die Anzahl der gleichzeitigen Besucher im Laufe der Zeit erhöht wird. Dieser Modus kann auch für einen längeren Zeitraum zu einer dauerhaften Auslastung führen. Dies ist hilfreich, wenn Sie herausfinden möchten, wie sich die Leistung Ihrer Website bei Vorgängen wie dem Erstellen von Sicherungen auswirkt.

Wechseln Sie in Ihr Home-Verzeichnis und starten Sie Siege im Internetmodus. Wenn Sie nur mit HTTP-Adressen testen möchten, ersetzen Sie "" durch "+ urls.txt +". Wenn Sie folgten Link: # Schritt-5-% E2% 80% 94-Erstellen-einer-https-URL-Datei- (optional) [Schritt 5] und gegen HTTPS-Adressen testen möchten, ersetzen Sie `` durch ` + urls-https.txt + `.

cd ~
siege --internet --concurrent=5 --time=30S --log="siege-internet.log" --file=""
  • + - internet + versetzt Siege in den Internetmodus.

  • "+ - gleichzeitiges +" ist die Anzahl der zu simulierenden Besucher. In diesem Beispiel Wir haben Siege angewiesen, 5 gleichzeitige Benutzer zu simulieren, um Datenverkehr zu generieren, ohne den Server zu überlasten. Wenn Sie sich mit den Funktionen Ihres Servers vertraut gemacht haben, können Sie diese Anzahl nach Bedarf erhöhen.

  • + - time + gibt an, wie lange Siege ausgeführt wird. Dieser Wert kann mit + S + für Sekunden, + M + für Minuten und + H + für Stunden eingestellt werden. In diesem Beispiel haben wir Siege angewiesen, erneut 30 Sekunden auszuführen, um Datenverkehr zu generieren, ohne den Server zu überlasten. In Zukunft können Sie mit unterschiedlichen Zeiträumen experimentieren, um zu sehen, wie Ihr Server auf eine anhaltende Verkehrslast reagiert.

  • + - log + ist der Pfad zu dem Ort, an den Sie die Testergebnisse schreiben möchten. Standardmäßig lautet dieser Speicherort "+ / var / log / siege.log +" und erfordert Sudo-Berechtigungen.

  • + - Datei + ist der Pfad zu der Datei, die die URLs enthält, die Siege für den Test verwendet.

Wenn Sie Siege zum ersten Mal starten, werden die von Ihnen verwendete Versionsnummer und die Anzahl der gleichzeitig simulierten Benutzer angezeigt. Dann wird Ihnen mitgeteilt, dass der Test begonnen hat.

Siege Output at Start of Run** SIEGE 3.0.8
** Preparing 5 concurrent users for battle.
The server is now under siege...

Sobald Siege seine Ausführung abgeschlossen hat oder mit "+ STRG + C +" beendet wird, werden auch die Testergebnisse zusammen mit dem Speicherort der Ergebnisprotokolldatei angezeigt.

Siege Output at End of Run...
Lifting the server siege...      done.

Transactions:                    157 hits
Availability:                 100.00 %
Elapsed time:                  29.72 secs
Data transferred:               0.15 MB
Response time:                  0.49 secs
Transaction rate:               5.28 trans/sec
Throughput:                     0.01 MB/sec
Concurrency:                    2.59
Successful transactions:         161
Failed transactions:               0
Longest transaction:            0.74
Shortest transaction:           0.27

FILE: siege-internet.log
You can disable this annoying message by editing
the .siegerc file in your home directory; change
the directive 'show-logfile' to false.

Da die in der Ausgabe enthaltenen Statistiken komplex sind, werden wir sie im folgenden Link genauer untersuchen: # step-7-% E2% 80% 94-understanding-siege’s-results [Step 7].

Lassen Sie uns jetzt Siege im Benchmark-Modus ausführen, um die maximale Anzahl von Seitenanforderungen zu ermitteln, die die Site gleichzeitig verarbeiten kann. Diese Informationen sind hilfreich, wenn Sie versuchen, zu entscheiden, welche zusätzlichen Technologien die Leistung Ihrer Website verbessern können. Darüber hinaus kann der Benchmark-Modus Ressourcenengpässe aufzeigen, wie Sie sehen werden, wenn wir diesen Modus unter folgendem Link näher untersuchen: # step-8-% E2% 80% 94-Identifizierung von Leistungsengpässen [Schritt 8].

Starten Sie Sie Siege erneut, diesmal im Benchmark-Modus, indem Sie "+ - Benchmark" anstelle von "+ - Internet" verwenden.

siege --benchmark --time=30S --log="siege-benchmark.log" --file=""

Die Ausgabe folgt demselben Format wie zuvor, außer dass diesmal die Ergebnisse unterschiedlich sind, da der Modus unterschiedlich war.

Siege Output** SIEGE 3.0.8
** Preparing 5 concurrent users for battle.
The server is now under siege...
Lifting the server siege...      done.

Transactions:                    444 hits
Availability:                 100.00 %
Elapsed time:                  29.72 secs
Data transferred:               18.16 MB
Response time:                  0.49 secs
Transaction rate:               105.28 trans/sec
Throughput:                     4.41 MB/sec
Concurrency:                    14.14
Successful transactions:         421
Failed transactions:               0
Longest transaction:            0.74
Shortest transaction:           0.27

FILE: siege-benchmark.log
You can disable this annoying message by editing
the .siegerc file in your home directory; change
the directive 'show-logfile' to false.

Wie bei den Statistiken aus dem Internet-Modus sind die Statistiken aus dem Benchmark-Modus komplex. Wir werden sie im folgenden Link genauer untersuchen: # step-7-% E2% 80% 94-Verstehen-der-Belagerungsergebnisse [Steps 7] und Link: # step-8-% E2% 80% 94-Identifizieren-der-Leistung- Engpässe [8].

Nachdem wir Ihre Site mit Siege getestet und bewertet haben, können wir die Ausgabe detaillierter untersuchen und die Statistiken praktisch nutzen.

Schritt 7 - Verstehen der Belagerungsergebnisse

Wenn es darum geht, die Leistung Ihrer Website zu verstehen, Engpässe zu identifizieren und zu entscheiden, auf welche Upgrades Sie sich konzentrieren möchten, kann Siege eine wichtige Ressource sein. Die bereitgestellten Statistiken decken eine Reihe von Metriken ab, mit denen Sie einen umfassenden Einblick in den allgemeinen Zustand Ihrer Website erhalten.

Wie wir in Link gesehen haben: # step-6-% E2% 80% 94-Benchmarking-und-Testen-mit-Belagerung [Schritt 6]

Siege Output at End of Run...
Transactions:                    904 hits
Availability:                  97.41 %
Elapsed time:                   4.59 secs
Data transferred:               4.37 MB
Response time:                  0.07 secs
Transaction rate:             196.95 trans/sec
Throughput:                     0.95 MB/sec
Concurrency:                   12.86
Successful transactions:         904
Failed transactions:              24
Longest transaction:            1.95
Shortest transaction:           0.00
...

Im Einzelnen bedeuten diese Metriken:

  • "+ Transaktionen +" ist die Gesamtzahl der Anfragen, die Siege gestellt hat.

  • + Verfügbarkeit + ist der Prozentsatz der Anfragen, auf die der Webserver geantwortet hat, einschließlich https://www.digitalocean.com/community/tutorials/how-to-troubleshoot-common-http-error-codes#400-bad- Anfrage [HTTP-Fehlercodes auf 4xx und 5xx-Ebene].

  • "+ Verstrichene Zeit" gibt an, wie lange der Test ausgeführt wurde.

  • + Übertragene Daten + ist die Gesamtmenge der Bandbreite, die Siege zum Testen der Site verwendet hat.

  • + Antwortzeit + ist die durchschnittliche Zeit, die der Webserver benötigt hat, um auf eine Anfrage zu antworten.

  • "+ Transaktionsrate +" ist die durchschnittliche Anzahl von Transaktionen pro Sekunde, die der Webserver bedient hat.

  • + Durchsatz + ist die Datenmenge pro Sekunde, die der Webserver bedient hat.

  • + Nebenläufigkeit + ist die durchschnittliche Anzahl offener gleichzeitiger Verbindungen.

  • "+ Erfolgreiche Transaktionen +" ist die Gesamtzahl der Transaktionen, auf die mit einem HTTP-Statuscode geantwortet wurde weniger als 400.

  • "+ Fehlgeschlagene Transaktionen +" ist die Gesamtzahl der Transaktionen, auf die mit dem HTTP-Statuscode https://www.digitalocean.com/community/tutorials/how-to-troubleshoot-common-http-error-codes#400-bad geantwortet wurde -Anfrage [größer als 400].

  • + Längste Transaktion + ist die Zeit, die die längste Anfrage benötigt hat.

  • "+ Kürzeste Transaktion +" ist die Zeit, die die kürzeste Anforderung zum Abschließen benötigte.

"+ Transaktionsrate " und " Fehlgeschlagene Transaktionen +" bieten den schnellsten Lackmustest für den allgemeinen Zustand Ihres Webservers.

Die "+ Transaktionsrate +" steht für die Geschwindigkeit Ihrer Website, da dies die Anzahl der Seiten pro Sekunde ist, die Ihr Webserver liefern kann. Je höher diese Zahl ist, desto mehr Besucher kann Ihre Website verarbeiten und desto schneller erhalten die Besucher jede Seite. Wenn Sie Siege verwenden, um die allgemeine Reaktionsfähigkeit Ihrer Website zu verbessern, ist dies die Zahl, die Sie erhöhen möchten.

Der Wert "+ Fehlgeschlagene Transaktionen +" bezieht sich auf alle Antworten des Webservers, die einen Fehlercode enthalten, z. B. "+503 Dienst nicht verfügbar +". Diese Fehler deuten häufig auf Probleme hin, z. B. auf eine Datenbank, die die Anzahl der empfangenen Anforderungen nicht verarbeiten kann, oder auf einen Webserver, auf dem nicht genügend RAM zur Verfügung steht. Wenn diese Zahl nicht Null ist, sollten Sie in den Protokolldateien Ihres Webservers nachsehen, welche Fehler genau aufgetreten sind, und Anweisungen zur Behebung der Probleme erhalten.

Wenn Sie Änderungen vornehmen, um Ihre "+ Transaktionsrate " zu erhöhen und Ihre " Fehlgeschlagenen Transaktionen +" im Laufe der Zeit zu verringern, sollten Sie auch die Protokolldatei konsultieren, die Sie bei jedem Durchlauf von Siege erstellt haben, da sie alle in Ihrer Liste angezeigten Statistiken enthält Terminal sowie Datum und Uhrzeit des Tests. Auf diese Weise können Sie den Gesamtverlauf Ihrer Bemühungen verfolgen.

Nachdem wir die Ausgabe von Siege untersucht haben, um die Geschwindigkeit und Robustheit Ihres Webservers zu bestimmen, ist es an der Zeit, zu prüfen, wie wir dieselben Informationen verwenden können, um Leistungsengpässe zu identifizieren und zu beseitigen.

Schritt 8 - Identifizieren von Leistungsengpässen

Im Benchmark-Modus stellt Siege so viele Anfragen pro Sekunde, wie der Webserver bedienen kann. Wenn der Server die maximale Anzahl von Seiten erreicht, die er liefern kann, hat er ein Ressourcenlimit erreicht.

Die vier am wahrscheinlichsten betroffenen Ressourcen sind:

  1. RAM

  2. CPU

  3. Disk

  4. Netzwerk Bandbreite

Um den Benchmark-Modus optimal nutzen zu können, müssen Sie gleichzeitig mit Siege einige zusätzliche Tools ausführen, damit Sie überwachen können, was auf Ihrem System passiert, wenn Siege die Testlast erhöht.

Mit top, einem Tool, das eine dynamische Echtzeitansicht der Systemressourcen bietet, können Sie die ersten drei Ressourcen überwachen - RAM, CPU und Datenträgernutzung.

Ubuntu wird standardmäßig mit top ausgeliefert, sodass Sie es nicht installieren müssen. Führen Sie einfach den Befehl "+ top +" aus.

Die oben angezeigten Informationen sind in zwei Abschnitte unterteilt.

Sample top Outputtop - 21:02:32 up 50 min,  1 user,  load average: 0.07, 0.02, 0.00
Tasks: 102 total,   1 running, 101 sleeping,   0 stopped,   0 zombie
 0.0 ni, 99.3 id,  8.3 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   1015200 total,    63536 free,    431456 used,   520208 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   512308 avail Mem

 PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
3249 www-data     20   0   469592   92276   33488 D  24.6  9.1   0:05.01 apache2
3239 www-data     20   0   442836   75080   41896 S  5.6  7.4   1:31.97 apache2
3572 www-data     20   0   424372   35272   21164 S  4.0  3.5   0:02.69 apache2

Der obere Abschnitt, der sich aus den ersten fünf Ausgabezeilen zusammensetzt, zeigt eine Zusammenfassung der aktuellen Systemnutzung.

Der untere Abschnitt zeigt eine Liste der einzelnen Serverprozesse, die derzeit auf dem System ausgeführt werden, zusammen mit der Identifikationsnummer, dem Eigentümer, der Priorität, dem Nutzwert, der Nutzung des virtuellen Speichers, der Nutzung des physischen Speichers, der Nutzung des gemeinsam genutzten Speichers, dem Status und dem Prozentsatz der CPU-Nutzung. Prozent der Speichernutzung, Gesamtdauer der Aktivität und Name.

Während top ein nützliches Tool für managing processes und https ist : //www.digitalocean.com/community/tutorials/how-to-monitor-cpu-use-on-digitalocean-droplets#monitoring-the-cpu [Überwachung der CPU-Auslastung] In diesem Fall möchten wir sehen, was es ist kann uns über unser System unter dem Druck eines Belagerungstests berichten.

Die CPU-Auslastung lautet "+% CPU (s): 37,3 us, 7,3 sy, +". Diese Werte geben an, dass die Benutzerprozesse 37,3% der CPU und die Systemprozesse 7,3% verbrauchen. Wenn Sie diese beiden Werte addieren, erhalten Sie die gesamte CPU-Auslastung.

Wenn Ihr Server zu 100% oder fast zu 100% ausgelastet ist, überprüfen Sie die Einträge in der Liste der Prozesse, um festzustellen, ob einer oder mehrere ungewöhnlich viel CPU verbrauchen. In diesem Fall sollten Sie die Prozesse neu konfigurieren oder optimieren, um weniger CPU zu verbrauchen. Ist dies nicht möglich, müssen Sie möglicherweise die CPU auf Ihrem Server aktualisieren.

Lassen Sie uns nun die Speichernutzung untersuchen.

Sample top Outputtop - 21:02:32 up 51 min,  1 user,  load average: 0.21, 0.47, 0.80
Tasks: 102 total,   1 running, 101 sleeping,   0 stopped,   0 zombie
%Cpu(s):  17.4 us,  3.4 sy,  0.0 ni, 79.2 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :       223.914 free,    395.621 used,   371.871 buff/cache
MiB Swap:        0.000 total,        0.000 free,        0.000 used.

 PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
3249 www-data     20   0   469592   92276   33488 D  24.6  9.1   0:05.01 apache2
3239 www-data     20   0   442836   75080   41896 S  5.6  7.4   1:31.97 apache2
3572 www-data     20   0   424372   35272   21164 S  4.0  3.5   0:02.69 apache2

Standardmäßig wird die RAM-Auslastung in der vierten Zeile in Kilobyte angezeigt. In der obigen Beispielausgabe haben wir bereits einmal die Tastenkombination "+ UMSCHALT + E " gedrückt und den Wert in Megabyte konvertiert, um die Arbeit mit den Zahlen zu vereinfachen. Drücken Sie ` UMSCHALT + E ` ein zweites Mal, um den Wert in Gigabyte umzuwandeln, und drücken Sie ` UMSCHALT + E +`, um zur Standard-Kilobyte-Anzeige zurückzukehren.

Der Wert "+ total +" gibt die Gesamtmenge des auf dem Server verfügbaren Speichers an. Beachten Sie, dass der Kernel beim Booten etwas Speicher reserviert, sodass auf einem 1024-MB-Computer hier 991 MB Speicher angezeigt werden.

Das "+ avail Mem +" zeigt die Menge des verbleibenden Speichers auf dem System an. Diese Zahl wird kleiner, wenn mehr RAM verwendet wird, und erreicht schließlich Null, wenn auf dem Server kein Speicher mehr verfügbar ist.

Wie bei der CPU-Auslastung sollten Sie die Liste der Prozesse auf Einträge untersuchen, die ungewöhnlich viel Speicher belegen, wenn "+ avail Mem +" bei oder nahe Null ausgeführt wird. Konfigurieren Sie diese Prozesse nach Möglichkeit neu, oder optimieren Sie sie, um weniger Arbeitsspeicher zu verbrauchen, oder aktualisieren Sie die RAM-Größe auf Ihrem Server.

Lassen Sie uns abschließend die Datenträgernutzung betrachten.

Sample top Outputtop - 21:02:32 up 52 min,  1 user,  load average: 0.21, 0.47, 0.80
Tasks: 102 total,   1 running, 101 sleeping,   0 stopped,   0 zombie
%Cpu(s):  17.4 us,  3.4 sy,  0.0 ni, 79.2 id,    0.0 hi,  0.0 si,  0.0 st
KiB Mem :   1015200 total,    63536 free,    431456 used,   520208 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   512308 avail Mem

 PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
3249 www-data     20   0   469592   92276   33488 D  24.6  9.1   0:05.01 apache2
3239 www-data     20   0   442836   75080   41896 S  5.6  7.4   1:31.97 apache2
3572 www-data     20   0   424372   35272   21164 S  4.0  3.5   0:02.69 apache2

Die Festplattennutzung, an der wir interessiert sind, ist nicht, wie viel Festplattenspeicher verfügbar ist, sondern wie viel Festplattenzugriff den Server verlangsamt. Der Datenträgerzugriff ist, insbesondere auf einem Server mit sich drehenden Plattentellern, sehr langsam. Wenn der Server auf die Datenträger zugreift, muss die CPU auf den Abruf der Informationen warten.

Top meldet diese Informationen als "+ wa +" - Wert. Es gibt den Prozentsatz der Zeit an, in der sich die CPUs im Leerlauf befinden und auf Daten von der Festplatte warten. Diese Zahl sollte so nahe wie möglich bei 0,0 liegen.

Im vorhergehenden Beispiel ist der Wert "+ wa " " 31,6 +". Dies bedeutet, dass die CPU ein Drittel ihrer Zeit auf Daten von der Festplatte wartet. Dies ist sehr zeitaufwendig und beeinträchtigt die Leistung der Website erheblich.

E / A-Wartezeiten sind häufig das Ergebnis des Zugriffs auf die Festplatte auf Dateien oder des wiederholten Aufrufs lokaler Datenbanken. Wenn + wa + weit über 0,0 liegt, sollten Sie statische Ressourcen an einen entfernten Ort wie ein Content Delivery Network (CDN) verschieben oder nach Möglichkeiten suchen, um die Anzahl der Fahrten zu verringern, die Ihre Anwendungen in die zugehörigen lokalen Datenbanken durchführen.

Drücken Sie + Q +, um oben zu beenden.

Die letzte Ressource, die wir betrachten werden, ist die Netzwerknutzung. Um dies zu überwachen, verwenden wir das Tool "Bandwidth Monitor New Generation".

Installieren Sie dieses Tool mit "+ apt-get " und führen Sie es mit dem Befehl " bwm-ng +" aus.

sudo apt-get install bwm-ng
bwm-ng

Der obere Teil der Ausgabe zeigt die Versionsnummer von Bandwidth Monitor New Generation an, wie oft die Daten aktualisiert werden (standardmäßig alle 0,5 Sekunden). Die Eingabequelle wird verwendet, um die verfügbaren Netzwerkschnittstellen zu ermitteln (+ / proc / net / dev +) Standardmäßig unter Linux) und der angezeigte statistische Wert (Datennutzung + rate + standardmäßig).

Der untere Teil der Ausgabe enthält eine Tabelle, die die Menge an eingehenden Daten ("+ Rx "), ausgehenden Daten (" Tx ") und Gesamtdaten (" Total +") pro Netzwerkschnittstelle angibt.

In der letzten Zeile werden die Gesamtwerte aller Netzwerkschnittstellen angezeigt.

Sample bwm-ng Output  bwm-ng v0.6.1 (probing every 0.500s), press 'h' for help
 input: /proc/net/dev type: rate
 -         iface                   Rx                   Tx                Total
 ==============================================================================
              lo:           0.00 KB/s            0.00 KB/s            0.00 KB/s
            eth0:          30.99 KB/s          499.11 KB/s          530.11 KB/s
 ------------------------------------------------------------------------------
           total:          30.99 KB/s          499.11 KB/s          530.11 KB/s

Wenn die Netzwerkbandbreite einen Engpass verursacht, liegt dies normalerweise daran, dass "+ Tx " das Maximum erreicht hat. Um dieses Problem zu beheben, fragen Sie Ihren Hosting-Provider nach der Verbindungsgeschwindigkeit Ihres Servers und vergleichen Sie diese mit der von ` bwm-ng ` angezeigten Geschwindigkeit. Wenn die von " bwm-ng +" angezeigte Geschwindigkeit konstant oder nahe an der für Ihren Server verfügbaren maximalen Bandbreite liegt, müssen Sie in Betracht ziehen, Ihren Hosting-Plan zu aktualisieren oder zu einem anderen Anbieter zu wechseln.

Drücken Sie die Tastenkombination "+ STRG + C +", um "Bandwidth Monitor New Generation" zu beenden, wenn Sie mit dem Testen fertig sind.

Fazit

In diesem Handbuch haben wir das Siege-Benchmarking-Tool und den Sproxy-Proxyserver verwendet, um eine konfigurierbare Last auf einem Webserver zu generieren und auf den maximalen Durchsatz zu bringen. Diese Tools sind äußerst nützlich für die Bereitstellung von Websites, da sie helfen, Leistungsprobleme zu lokalisieren und gut informierte Upgrades zu planen.

Weitere Informationen zum Reduzieren von E / A- und Speicherengpässen finden Sie unter Varnish HTTP Cache. Varnish ist ein einfach zu verwendender Reverse-Proxy, der statische Website-Assets speichert und sowohl die RAM-Auslastung als auch die Festplatten-E / A reduziert.

Wenn Ihre Website PHP verwendet, sollten Sie PHP-FPM als Alternative zur Standard-PHP-Implementierung installieren. PHP-FPM reduziert die CPU-Anforderungen für die Bereitstellung von PHP-basierten Webseiten und beschleunigt so Ihre gesamte Website.