Wie führe ich einen Webserver-Leistungsbenchmark durch?

Kennen Sie die durchschnittliche Antwortzeit Ihrer Website? Wissen Sie, wie viele gleichzeitige Benutzer Ihre Site verarbeiten kann??


Lasttests sind wichtig, damit Webanwendungen die Website kennen Kapazität. Wenn Sie den Webserver auswählen möchten, müssen Sie zunächst die Lasttests durchführen und feststellen, welcher für Sie gut geeignet ist.

Benchmarking kann Ihnen bei der Entscheidung helfen.

  • Welcher Webserver funktioniert am besten?
  • Anzahl der Server, die Sie zur Bearbeitung von x Anforderungen benötigen
  • Welche Konfiguration liefert Ihnen die besten Ergebnisse?

Es gibt verschiedene Online-Tools, um einen Stresstest durchzuführen. Wenn Sie jedoch nach einer internen Lösung suchen oder nur die Leistung des Webservers messen möchten, können Sie diese verwenden ApacheBench und alternativ einige der unten aufgeführten Tools.

Ich habe Apache verwendet & Nginx-Webserver, auf dem gehostet wird DigitalOcean um es zu testen.

ApacheBench

ApacheBench (ab) ist ein Open Source-Befehlszeilenprogramm, das mit jedem Webserver funktioniert. In diesem Beitrag werde ich erklären, wie dieses kleine Programm installiert und der Auslastungstest durchgeführt wird, um die Ergebnisse zu vergleichen.

Apache

Lassen Sie uns ApacheBench mit einem yum-Befehl installieren.

yum installiere httpd-tools

Wenn Sie bereits über httpd-tools verfügen, können Sie dies ignorieren.

Lassen Sie uns nun sehen, wie es für 5000 Anforderungen mit einer Parallelität von 500 funktioniert.

[[E-Mail geschützt] ~] # ab -n 5000 -c 500 http: // localhost: 80 /
Dies ist ApacheBench, Version 2.3 <$ Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd., http://www.zeustech.net/
Lizenziert an die Apache Software Foundation, http://www.apache.org/
Benchmarking von localhost (geduldig sein)
500 Anfragen abgeschlossen
1000 Anfragen abgeschlossen
1500 Anfragen abgeschlossen
2000 Anfragen abgeschlossen
2500 Anfragen abgeschlossen
3000 Anfragen abgeschlossen
3500 Anfragen abgeschlossen
4000 Anfragen abgeschlossen
4500 Anfragen abgeschlossen
5000 Anfragen abgeschlossen
5000 Anfragen abgeschlossen
Serversoftware: Apache / 2.2.15
Server Hostname: localhost
Server-Port: 80
Dokumentpfad: /
Dokumentlänge: 4961 Byte
Parallelitätsstufe: 500
Testzeit: 13.389 Sekunden
Vollständige Anfragen: 5000
Fehlgeschlagene Anfragen: 0
Schreibfehler: 0
Nicht-2xx-Antworten: 5058
Insgesamt übertragen: 26094222 Bytes
HTML übertragen: 25092738 Bytes
Anfragen pro Sekunde: 373,45 [# / Sek.] (Mittelwert)
Zeit pro Anfrage: 1338.866 [ms] (Mittelwert)
Zeit pro Anfrage: 2,678 [ms] (Mittelwert für alle gleichzeitigen Anfragen)
Übertragungsrate: 1903,30 [KByte / s] empfangen
Verbindungszeiten (ms)
min Mittelwert [+/- sd] Median max
Verbinden: 0 42 20.8 41 1000
Verarbeitung: 0 428 2116,5 65 13310
Warten: 0 416 2117.7 55 13303
Gesamt: 51 470 2121,0 102 13378
Prozentsatz der Anfragen, die innerhalb einer bestimmten Zeit (ms) bearbeitet wurden
50% 102
66% 117
75% 130
80% 132
90% 149
95% 255
98% 13377
99% 13378
100% 13378 (längste Anfrage)
[[E-Mail geschützt] ~] #

Wie Sie sehen können, hat Apache damit umgegangen 373 Anfragen pro Sekunde, und es dauerte insgesamt 13,389 Sekunden, um die gesamten Anforderungen zu bedienen.

Jetzt wissen Sie, dass die Standardkonfiguration diese vielen Anforderungen erfüllen kann. Wenn Sie Konfigurationsänderungen vornehmen, können Sie den Test erneut durchführen, um die Ergebnisse zu vergleichen und die auszuwählen Beste einer.

Nginx

Machen wir den Test, was wir für Apache gemacht haben, damit Sie vergleichen können, welche besser abschneidet.

[[E-Mail geschützt] ~] # ab -n 5000 -c 500 http: // localhost: 80 /
Dies ist ApacheBench, Version 2.3 <$ Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd., http://www.zeustech.net/
Lizenziert an die Apache Software Foundation, http://www.apache.org/
Benchmarking von localhost (geduldig sein)
500 Anfragen abgeschlossen
1000 Anfragen abgeschlossen
1500 Anfragen abgeschlossen
2000 Anfragen abgeschlossen
2500 Anfragen abgeschlossen
3000 Anfragen abgeschlossen
3500 Anfragen abgeschlossen
4000 Anfragen abgeschlossen
4500 Anfragen abgeschlossen
5000 Anfragen abgeschlossen
5000 Anfragen abgeschlossen
Serversoftware: nginx / 1.10.1
Server Hostname: localhost
Server-Port: 80
Dokumentpfad: /
Dokumentlänge: 3698 Bytes
Parallelitätsstufe: 500
Testzeit: 0,758 Sekunden
Vollständige Anfragen: 5000
Fehlgeschlagene Anfragen: 0
Schreibfehler: 0
Insgesamt übertragen: 19660000 Bytes
HTML übertragen: 18490000 Bytes
Anfragen pro Sekunde: 6593,48 [# / Sek.] (Mittelwert)
Zeit pro Anfrage: 75,832 [ms] (Mittelwert)
Zeit pro Anfrage: 0,152 [ms] (Mittelwert für alle gleichzeitigen Anfragen)
Übertragungsrate: 25317,93 [KB / s] empfangen
Verbindungszeiten (ms)
min Mittelwert [+/- sd] Median max
Verbinden: 0 6 11.0 2 53
Verarbeitung: 5 19 8.2 17 53
Warten: 0 18 8,2 16 47
Gesamt: 10 25 17,4 18 79
Prozentsatz der Anfragen, die innerhalb einer bestimmten Zeit (ms) bearbeitet wurden
50% 18
66% 21
75% 21
80% 22
90% 69
95% 73
98% 75
99% 76
00% 79 (längste Anfrage)
[[E-Mail geschützt] ~] #

BEEINDRUCKEND! Hast du das gesehen Nginx behandelt 6593 Anfragen pro Sekunde! Ein Gewinner.

Wenn Sie also nur zwei Webserver vergleichen, erhalten Sie eine Vorstellung davon, welchen Sie für Ihre Webanwendung auswählen sollen.

Der obige Test ist unter CentOS 6.8, 64 Bit. Sie können mehrere Betriebssystemkombinationen ausprobieren & Webserver-Version für optimale Ergebnisse.

BELAGERUNG

BELAGERUNG ist ein HTTP-Lasttest-Dienstprogramm, das unter UNIX unterstützt wird. Sie können mehrere URLs in eine Textdatei einfügen, um den Test zu laden. Sie können Belagerung mit yum installieren.

# yum Belagerung installieren

Lassen Sie uns den Test mit 500 gleichzeitigen Anforderungen 5 Sekunden lang ausführen.

[[E-Mail geschützt] ~] # Belagerung -q -t 5S -c 500 http: // localhost /
Die Belagerung des Servers aufheben … fertig.
Transaktionen: 4323 Treffer
Verfügbarkeit: 100,00%
Verstrichene Zeit: 4,60 Sekunden
Datenübertragung: 15,25 MB
Reaktionszeit: 0,04 Sekunden
Transaktionsrate: 939,78 Trans / Sek
Durchsatz: 3,31 MB / s
Parallelität: 37,97
Erfolgreiche Transaktionen: 4323
Fehlgeschlagene Transaktionen: 0
Längste Transaktion: 1.04
Kürzeste Transaktion: 0,00
[[E-Mail geschützt] ~] #

Parameter aufschlüsseln.

-q – um es leise auszuführen (ohne Anforderungsdetails)

-t – 5 Sekunden laufen lassen

-c – 500 gleichzeitige Anfragen

Wie Sie sehen können, beträgt die Verfügbarkeit 100% und die Antwortzeit 0,04 Sekunden. Sie können den Lasttestparameter basierend auf Ihrem Ziel anpassen.

Gobench

Gobench ist in der Sprache Go und einem einfachen Dienstprogramm zum Testen der Last geschrieben, um die Leistung des Webservers zu bewerten. Es unterstützt mehr als 20.000 gleichzeitige Benutzer, was ApacheBench nicht tut.

Apache JMeter

JMeter ist eines der beliebtesten Open Source-Tools zur Messung der Leistung von Webanwendungen. JMeter ist eine Java-basierte Anwendung und nicht nur ein Webserver, sondern Sie können sie auch gegen PHP und Java verwenden. ASP.net, SOAP, REST usw..

JMeter hat eine anständige, benutzerfreundliche Benutzeroberfläche, und für die neueste Version 3.0 ist Java 7 oder höher erforderlich, um die Anwendung zu starten. Sie müssen JMeter ausprobieren, wenn Sie die Leistung der Webanwendung optimieren möchten.

wrk

wrk ist ein weiteres modernes Tool zur Leistungsmessung, mit dem Sie Ihren Webserver belasten und Latenz, Anforderungen pro Sekunde, Übertragung pro Sekunde usw. angeben können.

Mit wrk können Sie festlegen, dass ein Auslastungstest mit mehreren Threads ausgeführt werden soll.

Nehmen wir ein Beispiel für die Ausführung eines Tests für 5 Minuten mit 500 gleichzeitigen Benutzern mit 8 Threads.

wrk –t8 –c500 -d300s http: // localhost

HTTPLoad

Httpload kann mehrere URLs aus der Datei lesen oder im Befehlsargument angeben. Die neueste Version unterstützt SSL / TLS, dh Sie können die HTTPS (SSL) -fähige Webseiten-URL abfragen.

Beim Testen der SSL-fähigen URL haben Sie die Möglichkeit, die Verschlüsselung anzugeben, und ein einfacher Testbefehl würde folgendermaßen aussehen.

httpload -cipher AES256-SHA -parallel 200 -seconds 120 URL_LIST.txt

Um es besser zu verstehen, wird oben der Test für 2 Minuten für 200 gleichzeitige Benutzer ausgeführt.

Curl-Lader

Curl-Loader ist in C geschrieben, um die Anwendungslast zu simulieren, und unterstützt SSL / TLS. Neben dem Webseitentest können Sie dieses Open Source-Tool auch zum Laden von FTP-Servern verwenden.

Sie können einen Testplan mit einer Mischung aus HTTP, HTTPS, FTP und FTPS in einer einzigen Stapelkonfiguration erstellen.

httperf

Das httperf ist ein leistungsstarkes Tool, das sich auf Benchmarks auf Mikro- und Makroebene konzentriert. Es unterstützt die Protokolle HTTP / 1.1 und SSL.

Wenn Sie eine Anzahl gleichzeitiger Benutzer erwartet haben und testen möchten, ob eine Anzahl von Anforderungen von Ihrem Webserver bearbeitet werden kann, können Sie den folgenden Befehl verwenden.

httperf –server localhost –port 80 –num-conns 1000 –rate 100

Der obige Befehl testet mit 100 Anforderungen pro Sekunde für 1000 HTTP-Anforderungen.

Tsung

Tsung ist ein Multiprotokoll-Tool für verteilte Stresstests zur Belastung von HTTP-, SOAP-, PostgreSQL-, LDAP-, XAMP- und MySQL-Servern. Es unterstützt HTTP / 1.0, HTTP / 1.1 und Cookies werden automatisch verarbeitet.

Mit Tsung ist es möglich, einen Bericht zu erstellen.

Fazit

Ich hoffe oben Benchmarking-Tools Geben Sie eine Vorstellung von der Leistung Ihres Webservers und helfen Sie bei der Entscheidung, was für Ihr Projekt am besten geeignet ist.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map