Bewertung der Website-Performance mit Apache Bench

0 Aktien
0
0
0
0

Einführung

Apache Bench, kurz ab, ist ein Single-Thread-Befehlszeilentool des Apache HTTP Server-Projekts. Es dient der Durchführung von Leistungstests auf Ihrem Apache HTTP-Server. Apache Bench misst die Belastbarkeit Ihres Servers, indem es mehrere Anfragen simuliert. Dies wird als Stresstest oder Lasttest bezeichnet. Er ist wie eine Notfallübung für Ihre Website und stellt sicher, dass Ihr Server auch bei hohem Datenverkehr zuverlässig funktioniert.

Die Bedeutung von Benchmarking

Stellen Sie sich vor, Sie fahren ein Auto ohne Tachometer, Drehzahlmesser oder Tankanzeige. Sie wüssten weder, wie schnell Sie fahren, noch wie stark der Motor beansprucht wird und wie viel Benzin Sie noch im Tank haben. Das Benchmarking Ihrer Website funktioniert ähnlich. Es liefert Ihnen wichtige Leistungsdaten und hilft Ihnen zu verstehen:

  • Kapazität: Die Anzahl der Besucher, die Ihre Website verkraften kann, bevor die Benutzerfreundlichkeit nachlässt.
  • Stabilität: Wie sich Ihr System bei unterschiedlichem Datenverkehr verhält, insbesondere bei plötzlichen, unerwarteten Spitzen.
  • Engpässe: Welcher Teil Ihres Systems (z. B. Datenbank, Serversoftware, Netzwerk) schränkt die Leistung ein?.

Regelmäßige Benchmarks dienen nicht nur dazu, die Zahlen im Blick zu behalten. Sie stellen sicher, dass Ihre Website auch unter anspruchsvollsten Bedingungen verfügbar, zuverlässig und schnell bleibt. So sorgen Sie nicht nur für zufriedene Nutzer, sondern können auch mit wachsender Nutzerbasis souverän skalieren.

Schritt 1 – Apache Bench installieren

Bevor wir mit dem Benchmark beginnen, müssen wir sicherstellen, dass Apache Bench (ab) auf Ihrem System installiert ist. Apache Bench ist normalerweise im Lieferumfang des Apache HTTP-Servers enthalten, kann aber auch separat installiert werden, falls Sie Apache nicht als Webserver verwenden. Im Folgenden finden Sie Anleitungen zur Installation von Apache Bench auf verschiedenen Betriebssystemen:

  • Bei Debian-basierten Distributionen (Ubuntu, Debian) ist Apache Bench Teil des Pakets apache2-utils. Um es zu installieren, öffnen Sie Ihr Terminal und führen Sie folgenden Befehl aus:
sudo apt-get update sudo apt-get install apache2-utils
  • Red Hat-basierte Distributionen (Fedora, CentOS) Auf Red Hat-basierten Systemen können Sie yum oder dnf (unter Fedora) verwenden, um Apache Bench wie folgt zu installieren:
sudo yum install httpd-tools
  • یا اگر از dnf استفاده می کنید:
sudo dnf install httpd-tools
  • Arch Linux Für Arch Linux-Benutzer kann Apache Bench mit pacman installiert werden:
sudo pacman -S apache-tools
  • Apache Bench ist auf vielen macOS-Systemen vorinstalliert. Um zu überprüfen, ob es bereits installiert ist, öffnen Sie Ihr Terminal und geben Sie `ab` ein. Falls es installiert ist, werden Ihnen Informationen zur Verwendung des Befehls angezeigt. Falls es nicht installiert ist oder Sie auf die neueste Version aktualisieren möchten, können Sie es mit Homebrew installieren.
brew install homebrew/apache/ab

Schritt 2 – Einrichten der Testumgebung

Bevor Sie mit Apache Bench die Leistung Ihres Webservers testen, ist es entscheidend, eine kontrollierte Testumgebung zu schaffen. Dadurch wird sichergestellt, dass Ihre Testergebnisse so genau und konsistent wie möglich sind.

  • Auswahl eines Testservers

Isolation: Wählen Sie eine Serverumgebung, die vom Produktionsdatenverkehr isoliert ist, um Störungen für echte Benutzer zu vermeiden und konsistente Ergebnisse zu erzielen.

Iteration: Stellen Sie sicher, dass der Testserver die Produktionsumgebung hinsichtlich Hardware-, Software- und Netzwerkkonfiguration so genau wie möglich widerspiegelt.

  • Netzwerküberlegungen

Bandbreite: Prüfen Sie, ob Ihr Netzwerk über ausreichend Bandbreite verfügt. Netzwerküberlastung kann die Ergebnisse verfälschen.

Latenz: Berücksichtigen Sie die Latenz zwischen dem Testclient (auf dem Apache Bench ausgeführt wird) und dem Testserver. Eine hohe Latenz kann die Genauigkeit der Verbindungszeit beeinträchtigen.

  • Ressourcenüberwachung

Serverressourcen: Richten Sie eine Überwachung der Serverressourcen (CPU, Arbeitsspeicher, Festplatten-E/A, Netzwerk-E/A) ein, um während der Tests potenzielle Engpässe zu identifizieren.

Basisleistung: Erfassen Sie die Basisleistung des Servers im Leerlauf. Dies dient als Vergleichspunkt für Ihre Benchmark-Ergebnisse.

Schritt 3 – Benchmark-Ziele festlegen

Klare Ziele helfen Ihnen, Ihren Benchmarking-Prozess zu strukturieren und die Ergebnisse effektiv zu interpretieren. Zum Beispiel:

  • Maximale Anzahl gleichzeitiger Benutzer: Legen Sie die maximale Anzahl von Benutzern fest, die Ihr Server gleichzeitig bedienen kann, ohne die Leistung wesentlich zu beeinträchtigen.
  • Antwortzeit: Ermitteln Sie eine akzeptable Antwortzeit für Ihre Webanwendung unter verschiedenen Lastbedingungen.
  • Durchsatz: Legen Sie den Durchsatz (Anfragen pro Sekunde) fest, den Ihr Server unterstützen soll.
  • Spitzenlast: Planen Sie Tests für Spitzenlastszenarien ein, um sicherzustellen, dass Ihr Webserver hohe Lasten bewältigen kann.

Schritt 4 – Die Benchmark-Kriterien verstehen

Apache Bench bietet Benchmarks zur Messung der Leistung Ihres Webservers. Hier ist eine Übersicht einiger der wichtigsten Kennzahlen:

  • Durchsatz: Die Anzahl der Anfragen, die Ihr Server pro Sekunde verarbeiten kann. Höhere Werte deuten auf eine bessere Leistung und die Fähigkeit des Servers hin, mehr Datenverkehr zu bewältigen.
  • Zeit pro Anfrage: Die durchschnittliche Zeit, die für die Bearbeitung einer einzelnen Anfrage benötigt wird. Niedrigere Werte deuten auf schnellere Antwortzeiten und einen reaktionsschnelleren Server hin.
  • Gleichzeitige Anfragen: Die Anzahl der gleichzeitig an den Server gesendeten Anfragen. Diese Kennzahl hilft zu verstehen, wie gut der Server unter gleichzeitiger Last funktioniert.
  • Übertragungsrate: Die Datenmenge, die während des Tests pro Sekunde übertragen wurde. Sie gibt die Kapazität des Servers zur Inhaltsbereitstellung an und ist besonders wichtig für bandbreitenintensive Anwendungen.
  • Erfolgs-/Fehlerrate: Das Verhältnis von erfolgreichen Anfragen zu Fehlermeldungen (z. B. 404, 500). Eine hohe Erfolgsrate ist entscheidend für die Kundenzufriedenheit und die Zuverlässigkeit.

Das Verständnis dieser Kennzahlen hilft Ihnen, die Ergebnisse von Apache Bench zu interpretieren und festzustellen, ob Ihr Server die festgelegten Leistungsziele erreicht. Beachten Sie, dass diese Kennzahlen immer gemeinsam betrachtet werden sollten, da sie zusammen ein Leistungsprofil Ihres Servers ergeben.

Schritt 5 – Führen Sie einen einfachen Test durch

Öffnen Sie zunächst ein Terminalfenster. Wählen Sie die URL aus, die Sie testen möchten. Diese Seite sollte einer typischen Nutzung entsprechen. In diesem Beispiel verwenden wir http://example.com. Um einen einfachen Benchmark-Test durchzuführen, geben Sie folgenden Befehl ein:

ab -n 100 -c 10 http://example.com/

این دستور 100 درخواست را به http://example.com با همزمانی 10 درخواست در یک زمان ارسال می کند. پس از اجرای دستور، Apache Bench تست را اجرا می کند و پس از اتمام یک سری خروجی ارائه می دهد. بسته به تعداد درخواست ها و زمان پاسخگویی سرور، ممکن است چند ثانیه تا چند دقیقه طول بکشد.

مرحله 6 – تجزیه و تحلیل خروجی

پس از پایان تست، Apache Bench نتایج را نمایش می دهد. در اینجا یک نمونه از خروجی کوتاه شده است:

Document Path:          /
Document Length:        108 bytes

Concurrency Level:      10
Time taken for tests:   12.905 seconds
Complete requests:      100
Failed requests:        0
Non-2xx responses:      100
Total transferred:      29500 bytes
HTML transferred:       10800 bytes
Requests per second:    7.75 [#/sec] (mean)
Time per request:       1290.527 [ms] (mean)
Time per request:       129.053 [ms] (mean, across all concurrent requests)
Transfer rate:          2.23 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:      645  757 109.5    740    1401
Processing:   173  219 205.1    200    2246
Waiting:      172  218 205.1    196    2246
Total:        834  976 227.1    929    2939

Percentage of the requests served within a certain time (ms)
  50%    929
  66%    973
  75%    988
  80%    988
  90%   1022
  95%   1069
  98%   1622
  99%   2939
 100%   2939 (longest request)

خروجی Apache Bench چندین معیار کلیدی را ارائه می دهد که به درک عملکرد وب سایت تحت آزمایش کمک می کند.

مرحله 7 – استفاده پیشرفته و بهترین روش ها

تست همزمان

تست همزمان برای درک اینکه چگونه وب سرور شما تحت فشار عمل می کند ضروری است، و شبیه سازی چندین کاربر که به طور همزمان به وب سایت شما دسترسی دارند.

دستور:  -c در Apache Bench برای تنظیم سطح همزمانی استفاده می شود. که اینگونه به نظر می رسد:

ab -c <number_of_concurrent_users> http://example.com/
مثال: برای شبیه سازی 100 کاربر که همزمان به سرور شما ضربه می زنند، از:
ab -c 100 http://example.com/

نظارت بر منابع سرور: در حین انجام آزمایش، منابع سرور را با استفاده از ابزارهایی مانند top در لینوکس نظارت کنید تا اطمینان حاصل کنید که سرور بیش از حد مالیات دریافت نمی کند.

تست طولانی مدت

آزمایش طولانی مدت شامل اجرای معیار در یک دوره طولانی برای شناسایی نشت حافظه بالقوه یا کاهش عملکرد در طول زمان است.

دستور: از -t برای اجرای تست برای تعداد مشخصی از ثانیه استفاده کنید. این تست را به مدت 10 دقیقه اجرا می کند، به عنوان مثال:

ab -t 600 http://example.com/

Beispiel: Kombination mit Parallelverarbeitung zur Simulation eines realen Szenarios:

ab -c 100 -t 600 http://example.com/
Testen mit verschiedenen HTTP-Methoden

Einführung in HTTP-Methoden

  1. GET: Dies ist die Standardmethode zum Abrufen von Daten vom Server.
  2. POST: Wird verwendet, um Daten zur Verarbeitung an eine bestimmte Ressource zu senden.
Wie testet man mit der POST-Methode?
  1. Daten für die Übermittlung vorbereiten: Erstellen Sie eine Datei, die die zu übermittelnden Daten enthält.
  2. Befehl: Verwenden Sie -p, um Ihre Datendatei anzugeben, und das Flag -T, um den Inhaltstyp festzulegen.

Beispiel:

ab -p postdata.txt -T application/x-www-form-urlencoded

Schritt 8 – Auf das Ergebnis reagieren

Nach dem Ausführen von Apache Bench können Sie Engpässe identifizieren, indem Sie nach Folgendem suchen:

  • Hohe Werte für jede Anfrage: Dies kann auf eine langsame Verarbeitung oder begrenzte Serverressourcen hinweisen.
  • Niedrige Anzahl an Anfragen pro Sekunde: Dies könnte darauf hindeuten, dass Ihr Server nicht für die effektive Bewältigung hoher Datenverkehrslasten optimiert ist.
  • Breite Streuung im Prozentsatz der zu bestimmten Zeiten bearbeiteten Anfragen: Dauert die Bearbeitung vieler Anfragen deutlich länger, könnte dies auf eine uneinheitliche Serverleistung hindeuten.

Sie können also entscheiden, die Serverleistung zu erhöhen. Zum Beispiel:

  • Serverkonfiguration: Passen Sie die Einstellungen je nach Leistung an. Beispielsweise müssen Sie möglicherweise Einstellungen wie KeepAlive oder MaxClients ändern.
  • Skalierung: Ermitteln Sie, ob Ihre Serverhardware die Spitzenlast bewältigen kann oder ob Sie nach oben oder unten skalieren müssen.
  • Optimierung: Identifizieren Sie langsam laufende Skripte oder Datenbankabfragen, die optimiert werden müssen.

Ergebnis

In diesem Tutorial haben Sie gelernt, wie Sie Apache Bench installieren, einfache und fortgeschrittene Benchmark-Tests durchführen, die Ergebnisse interpretieren und fundierte Entscheidungen zur Optimierung Ihrer Serverleistung treffen. Benchmarking ist ein iterativer Prozess. Überwachen Sie daher regelmäßig die Leistung Ihrer Website und testen Sie verschiedene Konfigurationen. Bleiben Sie über neue Optimierungstechniken und -tools informiert, um Ihre Kenntnisse auf dem neuesten Stand zu halten und den reibungslosen Betrieb Ihrer Website zu gewährleisten. Denken Sie daran: Eine leistungsstarke Website bietet ein besseres Nutzererlebnis, was zu höherer Nutzerzufriedenheit und -bindung führen kann. Optimieren Sie die Leistung Ihrer Website kontinuierlich.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Das könnte Ihnen auch gefallen