Geekflare wird von unserem Publikum unterstützt. Wir können Affiliate-Provisionen durch den Kauf von Links auf dieser Website verdienen.
Teilen:

Wie führe ich einen Webserver-Leistungsbenchmark durch?

Benchmarking
Invicti Web Application Security Scanner – die einzige Lösung, die eine automatische Verifizierung von Schwachstellen mit Proof-Based Scanning™ bietet.

Kennst du deine durchschnittliche Antwortzeit der Website? Wissen Sie, wie viele gleichzeitige Benutzer Ihre Website 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 bedienen müssen x Anzahl der Anforderungen
  • Welche Konfiguration liefert Ihnen die besten Ergebnisse?
  • Welche Tech-Stacks schneiden besser ab?
  • Wenn Ihre Site langsamer oder ausfällt

Es gibt mehrere Online-Tools zur Durchführung eines Stresstests;; 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 den Apache & Nginx-Webserver verwendet, 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 install 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.

[root@lab ~]# ab -n 5000 -c 500 http://localhost:80/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 500 requests
Completed 1000 requests
Completed 1500 requests
Completed 2000 requests
Completed 2500 requests
Completed 3000 requests
Completed 3500 requests
Completed 4000 requests
Completed 4500 requests
Completed 5000 requests
Finished 5000 requests
Server Software:        Apache/2.2.15
Server Hostname:        localhost
Server Port:            80
Document Path:          /
Document Length:        4961 bytes
Concurrency Level:      500
Time taken for tests:   13.389 seconds
Complete requests:      5000
Failed requests:        0
Write errors:           0
Non-2xx responses:      5058
Total transferred:      26094222 bytes
HTML transferred:       25092738 bytes
Requests per second:    373.45 [#/sec] (mean)
Time per request:       1338.866 [ms] (mean)
Time per request:       2.678 [ms] (mean, across all concurrent requests)
Transfer rate:          1903.30 [Kbytes/sec] received
Connection Times (ms)
min  mean[+/-sd] median   max
Connect:        0   42  20.8     41    1000
Processing:     0  428 2116.5     65   13310
Waiting:        0  416 2117.7     55   13303
Total:         51  470 2121.0    102   13378
Percentage of the requests served within a certain time (ms)
50%    102
66%    117
75%    130
80%    132
90%    149
95%    255
98%  13377
99%  13378
100%  13378 (longest request)
[root@lab ~]#

Wie Sie sehen können, hat Apache damit umgegangen 373 Anfragen pro Sekunde, und es dauerte insgesamt 13.389 Sekunden, um die Gesamtanforderungen 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 eins.

Nginx

Lassen Sie uns testen, was wir für Apache getan haben, damit Sie vergleichen können, welche besser abschneidet.

[root@lab ~]# ab -n 5000 -c 500 http://localhost:80/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 500 requests
Completed 1000 requests
Completed 1500 requests
Completed 2000 requests
Completed 2500 requests
Completed 3000 requests
Completed 3500 requests
Completed 4000 requests
Completed 4500 requests
Completed 5000 requests
Finished 5000 requests
Server Software:        nginx/1.10.1
Server Hostname:        localhost
Server Port:            80
Document Path:          /
Document Length:        3698 bytes
Concurrency Level:      500
Time taken for tests:   0.758 seconds
Complete requests:      5000
Failed requests:        0
Write errors:           0
Total transferred:      19660000 bytes
HTML transferred:       18490000 bytes
Requests per second:    6593.48 [#/sec] (mean)
Time per request:       75.832 [ms] (mean)
Time per request:       0.152 [ms] (mean, across all concurrent requests)
Transfer rate:          25317.93 [Kbytes/sec] received
Connection Times (ms)
min  mean[+/-sd] median   max
Connect:        0    6  11.0      2      53
Processing:     5   19   8.2     17      53
Waiting:        0   18   8.2     16      47
Total:         10   25  17.4     18      79
Percentage of the requests served within a certain time (ms)
50%     18
66%     21
75%     21
80%     22
90%     69
95%     73
98%     75
99%     76
00%     79 (longest request)
[root@lab ~]#

WOW!

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 Kombinationen der Betriebssystem- und Webserverversion ausprobieren, um optimale Ergebnisse zu erzielen.

Magst du ApacheBench aus irgendeinem Grund nicht? Keine Sorge, es gibt viele andere, mit denen Sie das HTTP-Laden durchführen können.

SIEGE

BELAGERUNG ist ein HTTP-Lasttest-Dienstprogramm, das unter UNIX unterstützt wird. Sie können mehrere URLs in eine Textdatei einfügen, um Tests 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.

[root @ lab ~] # Belagerung -q -t 5S -c 500 http: // localhost / Aufheben der Serverbelagerung ... abgeschlossen. Transaktionen: 4323 Treffer Verfügbarkeit: 100.00% Verstrichene Zeit: 4.60 Sekunden Übertragene Daten: 15.25 MB Antwortzeit: 0.04 Sekunden Transaktionsrate: 939.78 Trans / Sek. Durchsatz: 3.31 MB / Sek. Parallelität: 37.97 Erfolgreiche Transaktionen: 4323 Fehlgeschlagene Transaktionen: 0 Längste Transaktion: 1.04 Kürzeste Transaktion: 0.00 [root @ lab ~] #

Parameter aufschlüsseln.

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

-t - 5 Sekunden lang laufen lassen

-c - 500 gleichzeitige Anforderungen

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.

Ali

Ali ist ein relativ neues Lasttest-Tool zur Durchführung von Echtzeitanalysen. Es werden mehrere zu installierende Plattformen unterstützt, einschließlich Docker.

Nach der Installation ausführen ali um die Nutzungsdetails zu sehen.

root@lab:~# ali
no target given
Usage:
  ali [flags] <target URL>

Flags:
  -b, --body string         A request body to be sent.
  -B, --body-file string    The path to file whose content will be set as the http request body.
      --debug               Run in debug mode.
  -d, --duration duration   The amount of time to issue requests to the targets. Give 0s for an infinite attack. (default 10s)
  -H, --header strings      A request header to be sent. Can be used multiple times to send multiple headers.
  -k, --keepalive           Use persistent connections. (default true)
  -M, --max-body int        Max bytes to capture from response bodies. Give -1 for no limit. (default -1)
  -m, --method string       An HTTP request method for each request. (default "GET")
  -r, --rate int            The request rate per second to issue against the targets. Give 0 then it will send requests as fast as possible. (default 50)
  -t, --timeout duration    The timeout for each request. 0s means to disable timeouts. (default 30s)
  -v, --version             Print the current version.

Examples:
  ali --duration=10m --rate=100 http://host.xz

Author:
  Ryo Nakao <ryo@nakao.dev>
root@lab:~#

Wie Sie oben sehen können, haben Sie die Möglichkeit, HTTP-Header, Testdauer, Ratenlimit, Zeitlimit und mehr zu senden. Ich habe einen kurzen Test gemacht Geekflare-Tools und hier sieht die Ausgabe so aus.

Der Bericht ist interaktiv und enthält detaillierte Informationen zur Latenz.

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 von Webanwendungen 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

Autocannon

Inspiriert von der Arbeit, Autokanone ist in Node.js geschrieben. Sie können es programmgesteuert über die API oder ein eigenständiges Dienstprogramm verwenden. Alles was Sie brauchen ist NodeJS installiert als Voraussetzung.

Sie können eine Reihe von Verbindungen, Anforderungen, Dauer, Mitarbeitern, Zeitüberschreitung und Verbindungsrate steuern und unzählige Optionen zum Benchmarking Ihrer Webanwendungen anbieten.

Curl-loader

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 die erwartete Anzahl gleichzeitiger Benutzer haben und testen möchten, ob Ihr Webserver eine Reihe von Anforderungen bedienen 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.

Conclusion

Ich hoffe, dass die oben genannten Benchmarking-Tools Ihnen eine Vorstellung von der Leistung Ihres Webservers geben und entscheiden, was für Ihr Projekt am besten funktioniert.

Als nächstes vergessen Sie nicht Überwachen Sie die Leistung Ihrer Website.

Danke an unsere Sponsoren
Weitere großartige Lektüre zum Thema Testmanagement
Treiben Sie Ihr Geschäft an
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti verwendet das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu verifizieren und innerhalb weniger Stunden umsetzbare Ergebnisse zu generieren.
    Versuchen Sie es mit Invicti
  • Web-Scraping, Wohn-Proxy, Proxy-Manager, Web-Unlocker, Suchmaschinen-Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie es mit Brightdata
  • Semrush ist eine All-in-One-Lösung für digitales Marketing mit mehr als 50 Tools in den Bereichen SEO, Social Media und Content-Marketing.
    Versuchen Sie es mit Semrush
  • Intruder ist ein Online-Schwachstellenscanner, der Cyber-Sicherheitslücken in Ihrer Infrastruktur findet, um kostspielige Datenschutzverletzungen zu vermeiden.
    MIT DER INTELLIGENTEN SCHADENKALKULATION VON Intruder