You are viewing this post: Best apache http server benchmarking tool Update
Siehe Thema apache http server benchmarking tool
Apache-2.4.53 – Linux From Scratch New
ab. is a tool for benchmarking your Apache HTTP server . apachectl. is a front end to the Apache HTTP server which is designed to help the administrator control the functioning of the Apache httpd daemon . apxs. is a tool for building and installing extension modules for …
Read more
Es ist bekannt, dass dieses Paket mit einer LFS-11.1-Plattform erstellt und ordnungsgemäß funktioniert
Das Apache HTTPD-Paket enthält einen Open-Source-HTTP-Server
Es ist nützlich, um lokale Intranet-Websites zu erstellen oder umfangreiche Webserver-Operationen auszuführen
Aus Sicherheitsgründen wird dringend empfohlen, den Server als nicht privilegierten Benutzer und Gruppe auszuführen
Erstellen Sie die folgende Gruppe und den folgenden Benutzer mit den folgenden Befehlen als root:
Befehlserklärungen
sed ‘/dir.*CFG_PREFIX/[email protected]^@#@’…: Zwingt das apxs-Dienstprogramm, absolute Pfadnamen für Module zu verwenden, wenn es dazu angewiesen wird Authentifizierung und Autorisierung (mod_authnz_fcgi.so schnelles CGI-Modul)
–enable-mods-shared=”all cgi” : Die Module sollten als Dynamic Shared Objects (DSOs) kompiliert und verwendet werden, damit sie vom Server ein- und ausgeschlossen werden können unter Verwendung der Laufzeit-Konfigurationsdirektiven runtime.
–enable-suexec : Dieser Schalter aktiviert das Erstellen des Apache suEXEC-Moduls, das verwendet werden kann, um Benutzern zu ermöglichen, CGI- und SSI-Skripte unter anderen Benutzer-IDs als der Benutzer-ID des aufrufenden Webservers auszuführen
suexec-* : Diese Schalter steuern das Verhalten des suEXEC-Moduls, wie z
B
das standardmäßige Dokumentstammverzeichnis, die minimale UID, die zum Ausführen des Skripts unter su verwendet werden kann E XEC
Bitte beachten Sie, dass Sie mit der minimalen UID 100 keine CGI- oder SSI-Skripte unter suEXEC als Apache-Benutzer ausführen können
..
/usr/lib/httpd/suexec: Diese Befehle bringen den suexec-Wrapper an die richtige Stelle, da dies nicht der Fall ist soll direkt ausgeführt werden
Sie passen auch die richtigen Berechtigungen der Binärdatei an, wodurch sie zu setgid apache wird.
Apache Bench – How to Load Test Web Server Update
Weitere hilfreiche Informationen im Thema anzeigen apache http server benchmarking tool
In this tutorial, we’ll show you how to use Apache Bench to load test your web server with http request. See how fast your server can response to http request under stress load and discover maximum number of concurent connections it can handle
apache http server benchmarking tool Ähnliche Bilder im Thema

CIS Benchmarks – CIS Center for Internet Security Update New
CIS Benchmarks help you safeguard systems, software, and networks against today’s evolving cyber threats.
Read more
Mit unserer globalen Community von Cybersicherheitsexperten haben wir CIS-Benchmarks entwickelt: mehr als 100 Konfigurationsrichtlinien für Produktfamilien von mehr als 25 Anbietern, um Systeme vor den sich ständig weiterentwickelnden Cyberbedrohungen von heute zu schützen
Mit unserer globalen Community von Cybersicherheitsexperten haben wir CIS-Benchmarks entwickelt : Mehr als 100 Konfigurationsrichtlinien für Produktfamilien von mehr als 25 Anbietern, um Systeme vor den sich ständig weiterentwickelnden Cyber-Bedrohungen von heute zu schützen
Verschaffen Sie sich mit uns einen Überblick über die CIS-Benchmarks und eine CIS-CAT-Demo
Jetzt registrieren.
How to Use Apache Bench to Load Test Your Website (ab linux command tutorial) Update
Neues Update zum Thema apache http server benchmarking tool
Learn how to use the Apache Bench ab linux command to stress test your website by sending it loads of traffic simultaneously.
Code snippets and ab install instructions at https://tonyteaches.tech/apache-bench-tutorial/
Check out my vlog channel @Tony Florida
#apache @apachebench #ab #loadtesting
Music: Milos by Eveningland https://youtu.be/xVzOFBggR3o
apache http server benchmarking tool Einige Bilder im Thema

Apache Bench Tutorial Neueste
Apache Bench (ab) is a load testing and benchmarking tool for Hypertext Transfer Protocol (HTTP) server. It can be run from command line and it is very simple to use. A quick load testing output can be obtained in just one minute.
+ ausführliche Artikel hier sehen
Read more
Apache-Bench-Tutorial
Apache Bench (ab) ist ein Lasttest- und Benchmarking-Tool für HTTP-Server (Hypertext Transfer Protocol)
Es kann über die Befehlszeile ausgeführt werden und ist sehr einfach zu bedienen
Eine schnelle Belastungstestausgabe kann in nur einer Minute erhalten werden
Da es nicht zu viel Vertrautheit mit Last- und Leistungstestkonzepten erfordert, ist es für Anfänger und fortgeschrittene Benutzer geeignet
Um dieses Tool zu verwenden, ist keine komplexe Einrichtung erforderlich
Darüber hinaus wird es automatisch mit dem Apache-Webserver installiert oder kann separat als Apache-Dienstprogramm installiert werden
Es verfügt nicht über alle Funktionen bekannterer Tools wie jMeter oder Grinder, ist aber für den Anfang gut
Zielgruppe
Dieses Tutorial richtet sich an Anwendungsentwickler und Systemadministratoren, die bereit sind, Apache Bench in einfachen und einfachen Schritten zu erlernen
Dieses Tutorial vermittelt Ihnen praktisches Wissen über Apache Bench, und nach Abschluss dieses Tutorials befinden Sie sich auf einem mittleren Fachwissen, von dem aus Sie sich auf ein höheres Fachwissen bringen können.
Voraussetzungen
Bevor Sie mit diesem Tutorial fortfahren, sollten Sie ein grundlegendes Verständnis von Befehlszeilenschnittstelle (CLI), HTTP, Texteditor und Webservern usw
haben, da Sie diese Tools benötigen, um Apache Bench erfolgreich für Lasttests auszuführen
Darüber hinaus ist es gut, wenn Sie Kenntnisse in Webentwicklungs- und Anwendungstestprozessen haben.
Install Apache Benchmark Tool (AB) – Windows 10 – No commentary Update
Weitere Informationen zum Thema apache http server benchmarking tool
How to install Apache Benchmark Tool in Windows 10 easily. In this episode of the No Commentary series you can learn how to install AB tool on your computer within 2 minutes. Drop me a like if it’s helpful to you. 🙂
Udemy profile: https://www.udemy.com/user/david-csejtei/
LinkedIn profile: https://www.linkedin.com/in/davidcsejtei/
Medium profile: https://codinglikedavid.medium.com/
🚀 Join my slack group to get help: https://join.slack.com/t/codinglikedavid/shared_invite/zt-wowi9q4g-0N_ngfSx0dcOUMaRftdylQ
apache http server benchmarking tool Einige Bilder im Thema

Benchmarking Apache Kafka, Apache Pulsar, and … – Confluent New Update
21/08/2020 · All tests deploy four worker instances to drive workload, three broker/server instances, one monitoring instance, and optionally a three-instance Apache ZooKeeper cluster for Kafka and Pulsar. After experimenting with several instance types, we settled on the network/storage-optimized class of Amazon EC2 instances, with enough CPU cores and …
+ ausführliche Artikel hier sehen
Read more
Apache Kafka® ist eines der beliebtesten Event-Streaming-Systeme
Es gibt viele Möglichkeiten, Systeme in diesem Bereich zu vergleichen, aber eine Sache, die alle interessiert, ist die Leistung
Kafka ist bekanntermaßen schnell, aber wie schnell ist es heute und wie schneidet es im Vergleich zu anderen Systemen ab? Wir haben uns entschieden, die Leistung von Kafka auf der neuesten Cloud-Hardware zu testen, um dies herauszufinden
Für Vergleiche haben wir einen traditionellen Nachrichtenbroker, RabbitMQ, und einen der auf Apache BookKeeper™ basierenden Nachrichtenbroker, Apache Pulsar, ausgewählt
Wir haben uns auf (1) Systemdurchsatz und (2) Systemlatenz konzentriert, da dies die primären Leistungskennzahlen für Event-Streaming-Systeme in der Produktion sind
Insbesondere misst der Durchsatztest, wie effizient jedes System die Hardware nutzt, insbesondere die Festplatten und die CPU
Der Latenztest misst, wie nah jedes System an der Bereitstellung von Echtzeit-Messaging ist, einschließlich Tail-Latenzen von bis zu p99,9 Perzentil, eine Schlüsselanforderung für Echtzeit- und unternehmenskritische Anwendungen sowie Microservices-Architekturen
Wir haben festgestellt, dass Kafka liefert den besten Durchsatz bei gleichzeitiger Bereitstellung der niedrigsten Ende-zu-Ende-Latenzen bis zum p99,9
Perzentil
Bei niedrigeren Durchsätzen liefert RabbitMQ Nachrichten mit sehr geringen Latenzen
Kafka Pulsar RabbitMQ
(Gespiegelt) Spitzendurchsatz
(MB/s) 605.MB/s 305.MB/s 38.MB/s p99 Latenz
(ms) 5ms
(200 MB/s Last) 25 ms
(200 MB/s Last) 1 ms*
(reduzierte 30 MB/s Last)
*RabbitMQ-Latenzen verschlechtern sich erheblich bei Durchsätzen über 30 MB/s
Darüber hinaus ist die Auswirkung der Spiegelung bei höherem Durchsatz erheblich, und bessere Latenzen können erreicht werden, indem nur klassische Warteschlangen ohne Spiegelung verwendet werden die Arbeitslasten
Er endet mit einer Erläuterung der Ergebnisse anhand der verschiedenen System- und Anwendungsmetriken
All dies ist Open Source, sodass neugierige Leser die Ergebnisse selbst reproduzieren oder tiefer in die gesammelten Prometheus-Metriken eintauchen können
Wie bei den meisten Benchmarks vergleichen wir die Leistung in einem Setup für eine bestimmte Arbeitslast
Wir empfehlen den Lesern immer, anhand ihrer eigenen Workloads/Setups zu vergleichen, um zu verstehen, wie sich diese auf Produktionsbereitstellungen übertragen
Für einen tieferen Einblick in Funktionen, Architektur, Ökosystem und mehr lesen Sie diesen vollständigen Leitfaden, in dem Kafka, Pulsar und RabbitMQ verglichen werden
Übersicht
Hintergrund
Lassen Sie uns zunächst jedes der Systeme kurz besprechen, um ihr allgemeines Design und ihre Architektur zu verstehen, und dabei die Kompromisse betrachten, die jedes System eingeht
Kafka ist eine verteilte Open-Source-Event-Streaming-Plattform und eines der fünf aktivsten Projekte der Apache Software Foundation
Im Kern ist Kafka als repliziertes, verteiltes, persistentes Commit-Protokoll konzipiert, das verwendet wird, um ereignisgesteuerte Microservices oder umfangreiche Stream-Verarbeitungsanwendungen zu betreiben
Clients erzeugen oder konsumieren Ereignisse direkt zu/von einem Cluster von Brokern, die Ereignisse dauerhaft in das zugrunde liegende Dateisystem lesen/schreiben und die Ereignisse außerdem automatisch synchron oder asynchron innerhalb des Clusters für Fehlertoleranz und Hochverfügbarkeit replizieren
Source Distributed Pub/Sub-Messaging-System, das ursprünglich auf Warteschlangen-Anwendungsfälle ausgerichtet war
Vor kurzem wurde auch die Event-Streaming-Funktionalität hinzugefügt
Pulsar ist als eine Ebene von (fast) zustandslosen Broker-Instanzen konzipiert, die eine Verbindung zu einer separaten Ebene von BookKeeper-Instanzen herstellen, die die Nachrichten tatsächlich lesen/schreiben und optional dauerhaft speichern/replizieren
Pulsar ist nicht das einzige System seiner Art, da es auch andere Messaging-Systeme wie Apache DistributedLog und Pravega gibt, die auf BookKeeper aufbauen und darauf abzielen, auch einige Kafka-ähnliche Event-Streaming-Funktionen bereitzustellen.
BookKeeper ist ein verteilter Open-Source-Speicherdienst, der ursprünglich als Write-Ahead-Protokoll für NameNode von Apache™ Hadoop® konzipiert wurde
Es bietet eine dauerhafte Speicherung von Nachrichten in Ledgern über Serverinstanzen, die Buchmacher genannt werden
Jeder Buchmacher schreibt jede Nachricht zu Wiederherstellungszwecken synchron in ein lokales Journalprotokoll und dann asynchron in seinen lokalen indizierten Ledger-Speicher
Im Gegensatz zu Kafka-Brokern kommunizieren Buchmacher nicht miteinander, und es sind die BookKeeper-Clients, die für die Replikation der Nachrichten zwischen den Buchmachern mit einem Protokoll im Quorum-Stil verantwortlich sind
RabbitMQ ist eine traditionelle Open-Source-Messaging-Middleware, die den AMQP-Messaging-Standard Catering implementiert bis hin zu Anwendungsfällen für Warteschlangen mit niedriger Latenz
RabbitMQ besteht aus einer Reihe von Broker-Prozessen, die „Austausche“ zum Veröffentlichen von Nachrichten und Warteschlangen zum Konsumieren von Nachrichten hosten
Verfügbarkeit und Haltbarkeit sind Eigenschaften der verschiedenen angebotenen Warteschlangentypen
Klassische Warteschlangen bieten die Mindestverfügbarkeitsgarantien
Klassische gespiegelte Warteschlangen replizieren Nachrichten an andere Broker und verbessern die Verfügbarkeit
Eine stärkere Haltbarkeit wird durch die kürzlich eingeführten Quorum-Warteschlangen bereitgestellt, jedoch auf Kosten der Leistung
Da es sich um einen leistungsorientierten Blogbeitrag handelt, haben wir unsere Bewertung auf klassische und gespiegelte Warteschlangen beschränkt
Haltbarkeit in verteilten Systemen
Single-Node-Speichersysteme (z
B
RDBMS) sind darauf angewiesen, dass Schreibvorgänge auf die Festplatte fsynchronisiert werden, um maximale Haltbarkeit zu gewährleisten
In verteilten Systemen ergibt sich die Haltbarkeit jedoch normalerweise aus der Replikation mit mehreren Kopien der Daten, die unabhängig voneinander ausfallen
Das Fsynchronisieren von Daten ist nur eine Möglichkeit, die Auswirkungen des Fehlers zu verringern, wenn er auftritt (z
B
könnte ein häufigeres Fsynchronisieren zu einer kürzeren Wiederherstellungszeit führen)
Umgekehrt, wenn genügend Replikate ausfallen, kann ein verteiltes System unabhängig von fsync unbrauchbar sein oder nicht
Ob wir fsyncen oder nicht, ist also nur eine Frage der Garantien, auf die sich jedes System für sein Replikationsdesign verlässt
Während einige stark darauf angewiesen sind, niemals Daten zu verlieren, die auf die Festplatte geschrieben wurden, und daher fsync bei jedem Schreibvorgang erfordern, handhaben andere dieses Szenario in ihrem Design auf die Festplatte fsynct wurde und was nicht
Indem Kafka weniger annimmt, kann es eine breitere Palette von Fehlern behandeln, wie z
Kafka ist auch in der Lage, das Betriebssystem zum Stapeln von Schreibvorgängen auf die Festplatte zu nutzen, um eine bessere Leistung zu erzielen
Wir konnten nicht kategorisch feststellen, ob BookKeeper die gleichen Konsistenzgarantien bietet, ohne jeden Schreibvorgang zu synchronisieren – insbesondere, ob es sich auf Replikation für Fehlertoleranz verlassen kann in Ermangelung einer synchronen Festplattenpersistenz
Dies wird weder in der Dokumentation noch in einer Beschreibung des zugrunde liegenden Replikationsalgorithmus behandelt
Basierend auf unserer Überprüfung und der Tatsache, dass BookKeeper einen gruppierten fsync-Algorithmus implementiert, glauben wir, dass er für seine Korrektheit auf fsyncing bei jedem Schreibvorgang angewiesen ist, aber wir würden gerne von Leuten in der Community hören, die vielleicht besser wissen, ob unsere Schlussfolgerung richtig ist.
Da dies auf jeden Fall ein kontroverses Thema sein kann, haben wir in beiden Fällen Ergebnisse angegeben, um sicherzustellen, dass wir so fair und vollständig wie möglich sind, obwohl das Ausführen von Kafka mit synchronem fsync äußerst ungewöhnlich und auch unnötig ist
Benchmarking-Rahmen
Bei jedem Benchmark fragt man sich, welches Framework verwendet wird und ob es fair ist
Zu diesem Zweck wollten wir das OpenMessaging Benchmark Framework (OMB) verwenden, das ursprünglich in großen Teilen von Pulsar-Mitarbeitern verfasst wurde
OMB war ein guter Ausgangspunkt mit grundlegender Workload-Spezifikation, Metrikerfassung/Berichterstellung für die Testergebnisse, Unterstützung für die drei ausgewählten Messaging-Systeme sowie einem modularen Cloud-Bereitstellungs-Workflow, der auf jedes System zugeschnitten ist
Beachten Sie jedoch, dass die Implementierungen von Kafka und RabbitMQ einige erhebliche Mängel aufwiesen, die die Fairness und Reproduzierbarkeit dieser Tests beeinträchtigten
Der resultierende Benchmarking-Code einschließlich der unten näher beschriebenen Fixes ist als Open Source verfügbar
Fixes für das OMB-Framework
Wir haben auf Java 11 und Kafka 2.6, RabbitMQ 3.8.5 und Pulsar 2.6 (die neuesten Versionen zum Zeitpunkt des Schreibens) aktualisiert
Wir haben die Überwachungsfunktionen für die drei Systeme erheblich verbessert, mit dem Grafana/Prometheus-Überwachungsstapel, der Metriken über Messaging-Systeme, JVM, Linux, Festplatte, CPU und Netzwerk erfasst
Dies war entscheidend, um Ergebnisse nicht nur berichten, sondern erklären zu können
Wir haben Unterstützung für Nur-Producer-Tests und Consumer-Only-Tests mit Unterstützung für das Generieren/Entleeren von Backlogs hinzugefügt, während wir auch einen wichtigen Fehler bei der Berechnung der Producer-Rate behoben haben, wenn die Anzahl der Themen kleiner als die Anzahl der Producer-Worker ist OMB Kafka-Treiber
Wir haben einen kritischen Fehler im Kafka-Treiber behoben, der Kafka-Produzenten von TCP-Verbindungen ausgehungert hat, was zu Engpässen bei einer einzelnen Verbindung von jeder Worker-Instanz führte
Der Fix macht die Kafka-Nummern im Vergleich zu anderen Systemen fair – das heißt, alle verwenden jetzt die gleiche Anzahl von TCP-Verbindungen, um mit ihren jeweiligen Brokern zu kommunizieren
Wir haben auch einen kritischen Fehler im Kafka-Benchmark-Consumer-Treiber behoben, bei dem Offsets zu häufig und synchron festgeschrieben wurden, was zu einer Verschlechterung führte, während dies bei anderen Systemen asynchron erfolgte
Wir haben auch die Kafka-Verbraucherabrufgröße und Replikationsthreads optimiert, um Engpässe beim Nachrichtenabruf bei hohen Durchsätzen zu beseitigen und die Broker äquivalent zu den anderen Systemen zu konfigurieren.
Korrekturen am OMB RabbitMQ-Treiber
Wir haben RabbitMQ verbessert, um Routing-Schlüssel und konfigurierbare Austauschtypen (DIRECT- und TOPIC-Austausch) zu verwenden, und außerdem einen Fehler im Bereitstellungs-Workflow des RabbitMQ-Clusters behoben
Routing-Schlüssel wurden eingeführt, um das Konzept der Partitionen pro Thema nachzuahmen, was dem Setup von Kafka und Pulsar entspricht
Wir haben einen TimeSync-Workflow für die RabbitMQ-Bereitstellung hinzugefügt, um die Zeit zwischen Client-Instanzen für präzise End-to-End-Latenzmessungen zu synchronisieren
Darüber hinaus haben wir einen weiteren Fehler im RabbitMQ-Treiber behoben, um eine genaue End-to-End-Latenzmessung zu gewährleisten.
Korrekturen am OMB Pulsar-Treiber
Für den OMB Pulsar-Treiber haben wir die Möglichkeit hinzugefügt, eine maximale Stapelgröße für den Pulsar-Produzenten anzugeben, und alle globalen Beschränkungen deaktiviert, die den Durchsatz bei höheren Zielraten für Produzenten-Warteschlangen über Partitionen hinweg künstlich begrenzen könnten
Wir mussten keine weiteren großen Änderungen an den Pulsar-Benchmark-Treibern vornehmen
Testbed
OMB enthält Testbed-Definitionen (Instance-Typen und JVM-Konfigurationen) und Workload-Treiberkonfigurationen (Producer/Consumer-Konfigurationen und serverseitige Konfigurationen) für seine Benchmarks, die wir als Grundlage für unsere Tests verwendet haben
Alle Tests stellen vier Worker-Instanzen bereit, um die Arbeitslast zu steigern, drei Broker-/Server-Instanzen, eine Überwachungsinstanz und optional einen Apache ZooKeeper-Cluster mit drei Instanzen für Kafka und Pulsar
Nachdem wir mit mehreren Instance-Typen experimentiert hatten, entschieden wir uns für die netzwerk-/speicheroptimierte Klasse von Amazon EC2-Instances mit genügend CPU-Kernen und Netzwerkbandbreite, um Festplatten-I/O-gebundene Workloads zu unterstützen
In den folgenden Abschnitten nennen wir alle Änderungen, die wir an diesen Basiskonfigurationen im Laufe der Zeit für verschiedene Tests vorgenommen haben
Festplatten
Wir haben uns speziell für den i3en.2xlarge (mit 8 vCores, 64 GB RAM, 2 x 2.500 GB NVMe-SSDs) wegen seines hohen Netzwerkübertragungslimits von 25 Gbit/s entschieden, das sicherstellt, dass der Testaufbau nicht netzwerkgebunden ist
Das bedeutet, dass die Tests die jeweilige maximale Serverleistung messen, nicht nur, wie schnell das Netzwerk ist
i3en.2xlarge-Instanzen unterstützen einen Schreibdurchsatz von bis zu ~655 MB/s auf zwei Festplatten, was die Server stark belastet
Einzelheiten finden Sie in der vollständigen Definition des Instance-Typs
Gemäß der allgemeinen Empfehlung und auch gemäß dem ursprünglichen OMB-Setup verwendet Pulsar eine der Festplatten für das Journaling und eine für die Ledger-Speicherung
An den Festplatten-Setups von Kafka und RabbitMQ wurden keine Änderungen vorgenommen
Abbildung 1
Ermittlung der maximalen Festplattenbandbreite von i3en.2xlarge-Instanzen auf zwei Festplatten, getestet mit dem dd-Linux-Befehl, um als Nordstern für Durchsatztests zu dienen
Disk 1 dd if=/dev/zero of=/mnt/data-1/test bs=1M count=65536 oflag=direct 65536+0 Records in 65536+0 Records out 68719476736 Bytes (69 GB) kopiert, 210.278 s, 327 MB/s Festplatte 2 dd if=/dev/zero of=/mnt/data-2/test bs=1M count=65536 oflag=direct 65536+0 Datensätze in 65536+0 Datensätze aus 68719476736 Bytes (69 GB) kopiert, 209.594 s, 328 MB/s
OS-Tuning
Darüber hinaus haben wir für alle drei verglichenen Systeme das Betriebssystem für eine bessere Latenzleistung optimiert, indem wir das Latenzleistungsprofil von tuned-adm verwendet haben, das alle dynamischen Optimierungsmechanismen für Festplatten- und Netzwerkplaner deaktiviert und den Leistungsregler für die CPU-Frequenzoptimierung verwendet
Es fixiert die p-States mit der höchstmöglichen Frequenz für jeden Kern und setzt den I/O-Scheduler auf die Deadline, um eine vorhersagbare Obergrenze für die Latenz von Festplattenanforderungen anzubieten
Schließlich wird auch die QoS (Quality of Service) der Energieverwaltung im Kernel für Leistung über Energieeinsparungen optimiert
Speicher
Die i3en.2xlarge-Testinstanzen haben fast die Hälfte des physischen Arbeitsspeichers (64 GB gegenüber 122 GB) im Vergleich zu den Standardinstanzen in OMB
Die Anpassung von Kafka und RabbitMQ an die Kompatibilität mit den Testinstanzen war einfach
Beide verlassen sich hauptsächlich auf den Seiten-Cache des Betriebssystems, der automatisch mit der neuen Instanz herunterskaliert wird
Pulsar-Broker und BookKeeper-Buchmacher verlassen sich jedoch auf Off-Heap/Direct-Speicher für das Caching, und wir haben den JVM-Heap/Maximum Direct dimensioniert Arbeitsspeicher, damit diese beiden separaten Prozesse auf i3en.2xlarge-Instanzen gut funktionieren
Insbesondere haben wir die Heap-Größe von jeweils 24 GB (in der ursprünglichen OMB-Konfiguration) auf jeweils 12 GB halbiert und den verfügbaren physischen Speicher proportional auf die beiden Prozesse und das Betriebssystem aufgeteilt
Bei unseren Tests sind wir auf java.lang.OutOfMemoryError: Direct gestoßen Pufferspeicherfehler bei hohen Zieldurchsätzen, was dazu führt, dass Buchmacher vollständig abstürzen, wenn die Heap-Größe geringer ist
Dies ist typisch für Speicherabstimmungsprobleme, mit denen Systeme konfrontiert sind, die Off-Heap-Speicher verwenden
Während direkte Byte-Puffer eine attraktive Wahl sind, um Java GC zu vermeiden, ist es eine herausfordernde Übung, sie in großem Maßstab zu zähmen
Durchsatztest
Das erste, was wir messen wollten, war der stabile Spitzendurchsatz, den jedes System bei gleicher Menge an Netzwerk-, Festplatten-, CPU- und Speicherressourcen erreichen konnte
Wir definieren stabilen Spitzendurchsatz als den höchsten durchschnittlichen Producer-Durchsatz, mit dem die Verbraucher ohne ständig wachsenden Rückstand Schritt halten können
Wirkung von fsync
Wie bereits erwähnt, besteht die empfohlene Standardkonfiguration für Apache Kafka darin, Nachrichten mithilfe der vom zugrunde liegenden Betriebssystem vorgeschriebenen Seiten-Cache-Flush-Richtlinie auf die Festplatte zu leeren/zu synchronisieren (anstatt jede Nachricht synchron zu synchronisieren) und sich für die Dauerhaftigkeit auf die Replikation zu verlassen
Grundsätzlich bietet dies eine einfache und effektive Möglichkeit, die Kosten für unterschiedliche Chargengrößen zu amortisieren, die von Kafka-Produzenten verwendet werden, um unter allen Bedingungen den maximal möglichen Durchsatz zu erreichen
Wenn Kafka für fsync bei jedem Schreibvorgang konfiguriert wäre, würden wir die Leistung nur künstlich behindern, indem wir fsync-Systemaufrufe erzwingen, ohne zusätzliche Vorteile.
Trotzdem kann es sich lohnen, die Auswirkungen von fsyncing auf jeden Schreibvorgang in Kafka zu verstehen, da wir die Ergebnisse für beide Fälle diskutieren werden
Die Auswirkung der unterschiedlichen Hersteller-Batchgrößen auf den Kafka-Durchsatz ist unten dargestellt
Der Durchsatz steigt mit zunehmender Stapelgröße, bevor er einen „Sweet Spot“ erreicht, an dem die Stapelgröße hoch genug ist, um die zugrunde liegenden Festplatten vollständig zu sättigen
Das Synchronisieren jeder Nachricht mit der Festplatte auf Kafka (orangefarbene Balken in Abbildung 2) liefert vergleichbare Ergebnisse für höhere Stapelgrößen
Beachten Sie, dass diese Ergebnisse nur auf den SSDs in der beschriebenen Testumgebung verifiziert wurden
Kafka nutzt die zugrunde liegenden Festplatten über alle Batchgrößen hinweg vollständig aus und maximiert entweder IOPS bei niedrigeren Batchgrößen oder den Festplattendurchsatz bei höheren Batchgrößen, selbst wenn jede Nachricht fsynchronisiert werden muss
Abbildung 2
Auswirkung der Stapelgröße auf den Durchsatz in Nachrichten/s in Kafka, wobei grüne Balken für fsync=off (Standard) und orangefarbene Balken für fsync jede Nachricht stehen
Aus dem obigen Diagramm geht jedoch hervor, dass die Verwendung der standardmäßigen fsync-Einstellungen (grüne Balken) es dem Kafka-Broker ermöglicht, die Seitenlöschungen besser zu verwalten, um insgesamt einen besseren Durchsatz zu erzielen
Insbesondere der Durchsatz mit den standardmäßigen Synchronisierungseinstellungen für niedrigere Producer-Batchgrößen (1 KB und 10 KB) ist etwa 3- bis 5-mal höher als der, der durch Fsyncing jeder Nachricht erreicht wurde
Bei größeren Stapeln (100 KB und 1 MB) amortisieren sich die Kosten für fsyncing jedoch und der Durchsatz ist vergleichbar mit den standardmäßigen fsync-Einstellungen
BookKeeper-Buchmacher implementieren gruppiertes Festschreiben/Synchronisieren auf die Festplatte auf Anwendungsebene, um den Festplattendurchsatz auf ähnliche Weise zu maximieren
BookKeeper schreibt standardmäßig (gesteuert durch die bookie-Konfiguration journalSyncData=true) fsyncs auf die Festplatte
Um alle Grundlagen abzudecken, haben wir Pulsar mit journalSyncData=false getestet, das auf BookKeeper für einen direkten Vergleich mit Kafkas Standard und empfohlen konfiguriert war Einstellung, dass jede einzelne Nachricht nicht synchronisiert wird
Wir sind jedoch bei den BookKeeper-Buchmachern auf große Latenzen und Instabilität gestoßen, was auf Warteschlangen im Zusammenhang mit dem Spülen hinweist
Wir haben das gleiche Verhalten auch mit dem Pulsar-Perf-Tool überprüft, das mit Pulsar geliefert wird
Soweit wir dies nach Rücksprache mit der Pulsar-Community beurteilen können, scheint dies ein Fehler zu sein, also haben wir uns entschieden, ihn aus unseren Tests auszuschließen
Da wir jedoch sehen konnten, dass der Durchsatz der Festplatten mit journalSyncData=true ausgereizt wird, glauben wir, dass dies die endgültigen Ergebnisse sowieso nicht beeinflussen wird
Abbildung 4
Wachstum der Callback-Warteschlange des BookKeeper-Journals mit journalSyncData=false
RabbitMQ arbeitet mit einer dauerhaften Warteschlange, die Nachrichten nur dann auf der Festplatte speichert, wenn die Nachrichten noch nicht verbraucht wurden
Im Gegensatz zu Kafka und Pulsar unterstützt RabbitMQ jedoch kein „Zurückspulen“ von Warteschlangen, um ältere Nachrichten noch einmal zu lesen
In Bezug auf die Haltbarkeit zeigten unsere Benchmarks, dass der Verbraucher mit dem Hersteller Schritt hielt, und daher bemerkten wir keine Schreibvorgänge auf der Festplatte
Wir haben auch RabbitMQ eingerichtet, um die gleichen Verfügbarkeitsgarantien wie Kafka und Pulsar zu liefern, indem wir gespiegelte Warteschlangen in einem Cluster von drei Brokern verwenden
Testaufbau
Das Experiment wurde gemäß den folgenden Prinzipien und erwarteten Garantien konzipiert:
Nachrichten werden aus Gründen der Fehlertoleranz 3x repliziert (siehe unten für spezifische Konfigurationen)
Wir aktivieren Batching für alle drei Systeme, um den Durchsatz zu optimieren
Wir bündeln bis zu 1 MB Daten für maximal 10 ms.
Daten für maximal
Pulsar und Kafka wurden mit 100 Partitionen über ein Thema konfiguriert.
über ein Thema
RabbitMQ unterstützt keine Partitionen in einem Thema
Um dem Kafka- und Pulsar-Setup zu entsprechen, haben wir einen einzelnen direkten Austausch (entspricht einem Thema) und verknüpfte Warteschlangen (entspricht Partitionen) deklariert
Weitere Einzelheiten zu diesem Setup finden Sie weiter unten
OMB verwendet einen Auto-Rate-Discovery-Algorithmus, der den Target-Producer-Durchsatz dynamisch ableitet, indem der Rückstand bei mehreren Raten untersucht wird
Wir haben in vielen Fällen wilde Schwankungen in der ermittelten Rate von 2,0 Nachrichten/s bis hin zu 500.000 Nachrichten/s gesehen
Diese beeinträchtigen die Wiederholbarkeit und Genauigkeit der Experimente erheblich
In unseren Experimenten haben wir den Zieldurchsatz explizit konfiguriert, ohne diese Funktion zu verwenden, und den Zieldurchsatz stetig über 10.000, 50.000, 100.000, 200.000, 500.000 und 1 Million Erzeugernachrichten pro Sekunde erhöht, wobei vier Erzeuger und vier Verbraucher 1-KB-Nachrichten verwendet haben
Wir haben dann die maximale Rate beobachtet, bei der jedes System eine stabile End-End-Leistung für verschiedene Konfigurationen bietet
Durchsatzergebnisse
Wir haben festgestellt, dass Kafka den höchsten Durchsatz der von uns verglichenen Systeme liefert
Aufgrund seines Designs wurde jedes erzeugte Byte nur einmal auf die Festplatte geschrieben, und zwar auf einem Codepfad, der seit fast einem Jahrzehnt von Tausenden von Organisationen auf der ganzen Welt optimiert wurde
Wir werden diese Ergebnisse für jedes System weiter unten detaillierter untersuchen
Abbildung 5
Vergleich des stabilen Spitzendurchsatzes für alle drei Systeme: 100 Themenpartitionen mit 1-KB-Nachrichten unter Verwendung von vier Erzeugern und vier Verbrauchern
Wir haben Kafka so konfiguriert, dass es batch.size=1MB und linger.ms=10 verwendet, damit der Produzent die an die Broker gesendeten Schreibvorgänge effektiv stapeln kann
Darüber hinaus haben wir acks=all im Producer zusammen mit min.insync.replicas=2 konfiguriert, um sicherzustellen, dass jede Nachricht an mindestens zwei Broker repliziert wurde, bevor sie an den Producer zurückgesendet wurde
Wir haben beobachtet, dass Kafka in der Lage war, beide Festplatten auf jedem der Broker effizient auszulasten – das ideale Ergebnis für ein Speichersystem
Einzelheiten finden Sie in der Kafka-Treiberkonfiguration
Abbildung 6
Leistung von Kafka unter Verwendung der standardmäßigen, empfohlenen fsync-Einstellungen
Das Diagramm zeigt die E/A-Nutzung auf Kafka-Brokern und den entsprechenden Producer/Consumer-Durchsatz (Quelle: Prometheus-Knotenmetriken)
Siehe Rohergebnisse für Details
Wir haben Kafka auch mit der alternativen Konfiguration getestet, bei der jede Nachricht auf allen Replikaten mithilfe von „flush.messages=1“ und „flush.ms=0“ auf die Festplatte synchronisiert wird, bevor der Schreibvorgang bestätigt wird
Die Ergebnisse sind im folgenden Diagramm dargestellt und liegen ziemlich nahe an der Standardkonfiguration
Einzelheiten finden Sie in den Rohergebnissen
Der Producer von Pulsar arbeitet anders als Kafka in Bezug darauf, wie er Anfragen in Warteschlangen stellt
Insbesondere verfügt es über interne Producer-Warteschlangen pro Partition sowie Grenzwerte für diese Warteschlangengrößen, die eine Obergrenze für die Anzahl der Nachrichten über alle Partitionen von einem bestimmten Producer festlegen
Um zu vermeiden, dass der Pulsar-Produzent einen Engpass bei der Anzahl der gesendeten Nachrichten verursacht, setzen wir sowohl die pro Partition als auch die globalen Limits auf unendlich, während wir mit einem bytebasierten Batching-Limit von 1 MB übereinstimmen…batchingMaxBytes(1048576) // 1MB. batchingMaxMessages(Integer.MAX_VALUE).maxPendingMessagesAcrossPartitions(Integer.MAX_VALUE);
Wir haben Pulsar auch ein höheres zeitbasiertes Batching-Limit gegeben, batchingMaxPublishDelayMs=50 , um sicherzustellen, dass das Batching hauptsächlich aufgrund von Byte-Limits einsetzt
Wir haben diesen Wert erreicht, indem wir den Wert kontinuierlich bis zu dem Punkt erhöht haben, an dem er keine messbare Auswirkung auf den stabilen Spitzendurchsatz hatte, den Pulsar letztendlich erreichte
Für die Replikationskonfiguration haben wir ensembleSize=3,writeQuorum=3,ackQuorum=2 verwendet, was der Konfiguration von Kafka entspricht
Einzelheiten finden Sie in den Pulsar-Benchmark-Treiberkonfigurationen
Mit dem Design von BookKeeper, bei dem Buchmacher Daten lokal sowohl in ein Journal als auch in ein Ledger schreiben, stellten wir fest, dass der stabile Spitzendurchsatz effektiv die Hälfte dessen war, was Kafka erreichen konnte
Wir haben festgestellt, dass diese grundlegende Designentscheidung einen tiefgreifenden negativen Einfluss auf den Durchsatz hat, was sich direkt auf die Kosten auswirkt
Sobald die Zeitschriftendiskette bei den BookKeeper-Buchmachern vollständig gesättigt war, wurde die Erzeugerrate von Pulsar an diesem Punkt begrenzt.
Abbildung 8
Prometheus-Knotenmetriken, die zeigen, dass die BookKeeper-Journalfestplatte für Pulsar ausgelastet ist, und der resultierende Durchsatz, der bei den BookKeeper-Buchmachern gemessen wurde
Einzelheiten finden Sie in den Rohergebnissen
Um dies weiter zu validieren, haben wir BookKeeper auch so konfiguriert, dass beide Festplatten in einer RAID 0-Konfiguration verwendet werden, was BookKeeper die Möglichkeit bietet, Journal- und Ledger-Schreibvorgänge über beide Festplatten zu verteilen
Wir konnten beobachten, dass Pulsar den kombinierten Durchsatz der Festplatten (~650 MB/s) maximierte, aber immer noch auf ~340 MB/s stabilen Spitzendurchsatz begrenzt war
Abbildung 9
Prometheus-Knotenmetriken, die zeigen, dass BookKeeper-Journalfestplatten mit einer RAID 0-Konfiguration immer noch ausgelastet sind
Abbildung 10
Prometheus-Knotenmetriken, die zeigen, dass die RAID 0-Festplatte ausgereizt wird, und der resultierende Durchsatz, der bei den Pulsar-Brokern gemessen wird
Einzelheiten finden Sie in den Rohergebnissen
Pulsar verfügt über eine abgestufte Architektur, die die BookKeeper-Buchmacher (Speicherung) von den Pulsar-Brokern (Caching/Proxy für die Speicherung) trennt
Der Vollständigkeit halber haben wir daher den obigen Durchsatztest auch in einer abgestuften Bereitstellung durchgeführt, bei der die Pulsar-Broker auf drei zusätzliche rechenoptimierte c5n.2xlarge-Instanzen (mit 8 virtuellen Kernen, 21 GB RAM, bis zu 25 Gbit/s Netzwerkübertragung, EBS-gestütztem Speicher) verschoben wurden
Die BookKeeper-Knoten blieben auf den speicheroptimierten i3en.2xlarge-Instanzen
Dies führte zu insgesamt sechs Instanzen/Ressourcen für Pulsar und BookKeeper in diesem speziellen Setup, mit 2x zusätzlichen CPU-Ressourcen und 33 % mehr Speicher als Kafka und RabbitMQ
Selbst bei den hohen Durchsätzen ist das System größtenteils I /O gebunden, und wir haben keine Verbesserungen von diesem Setup gefunden
In der folgenden Tabelle finden Sie die vollständigen Ergebnisse dieses speziellen Laufs
Ohne wirkliche CPU-Engpässe scheint die zweischichtige Architektur von Pulsar einfach nur mehr Overhead hinzuzufügen – zwei JVMs verbrauchen mehr Speicher, doppelt so viele Netzwerkübertragungen und mehr bewegliche Teile in der Systemarchitektur
Wir erwarten, dass bei Netzwerkeinschränkungen (im Gegensatz zu unseren Tests, die einen Überschuss an Netzwerkbandbreite boten) die zweischichtige Architektur von Pulsar die Netzwerkressourcen doppelt so schnell erschöpfen und dadurch die Leistung reduzieren würde 305.73 Am selben Ort 305.69
RabbitMQ enthält im Gegensatz zu Kafka und Pulsar kein Konzept von Partitionen in einem Thema
Stattdessen verwendet RabbitMQ einen Austausch, um Nachrichten an verknüpfte Warteschlangen weiterzuleiten, wobei entweder Header-Attribute (Header-Austausch), Routing-Schlüssel (direkter und Topic-Austausch) oder Bindungen (Fanout-Austausch) verwendet werden, von denen Verbraucher Nachrichten verarbeiten können
Um das Setup für die Workloads anzupassen, haben wir einen einzelnen direkten Austausch (entspricht einem Thema) und verknüpfte Warteschlangen (entspricht Partitionen) deklariert, die jeweils für die Bereitstellung eines bestimmten Routing-Schlüssels bestimmt sind
End-to-End hatten wir alle Produzenten, die Nachrichten mit allen Routing-Schlüsseln (Round Robin) generierten, und Konsumenten, die jeder Warteschlange zugeordnet waren
Wir haben RabbitMQ auch mit Best Practices optimiert, die von der Community vorgeschlagen wurden:
Replikation aktiviert (Warteschlangen werden auf alle Knoten im Cluster repliziert)
Nachrichtenpersistenz deaktiviert (Warteschlangen befinden sich nur im Speicher)
Verbraucher-Automatik aktiviert
Laden Sie balancierte Warteschlangen über Broker hinweg
24 Warteschlangen, da RabbitMQ einen dedizierten Kern pro Warteschlange verwendet (8 vCPUs x 3 Broker)
RabbitMQ kam mit dem Overhead der Replikation nicht gut zurecht, was den Durchsatz des Systems stark reduzierte
Wir haben festgestellt, dass alle Knoten während dieser Arbeitslast CPU-gebunden waren (vgl
die grüne Linie mit der rechten Y-Achse in der Abbildung unten), sodass nur sehr wenig Platz für weitere zu vermittelnde Nachrichten blieb
Einzelheiten finden Sie in der RabbitMQ-Treiberkonfiguration
Abbildung 11
RabbitMQ-Durchsatz + CPU-Auslastung
Einzelheiten finden Sie in den Rohergebnisdaten
Latenztest
Angesichts der ständig wachsenden Popularität von Stream-Verarbeitung und ereignisgesteuerten Architekturen ist ein weiterer wichtiger Aspekt von Messaging-Systemen die Ende-zu-Ende-Latenzzeit für eine Nachricht, die die Pipeline vom Erzeuger durch das System zum Verbraucher durchläuft
Wir haben ein Experiment entwickelt, um dies auf allen drei Systemen mit dem höchsten stabilen Durchsatz zu vergleichen, den jedes System ohne Anzeichen einer Überauslastung aufrechterhalten kann von nur maximal 1 ms (im Gegensatz zu den 10 ms, die wir für Durchsatztests verwendet haben) und jedes System in seiner empfohlenen Standardkonfiguration zu belassen und gleichzeitig eine hohe Verfügbarkeit sicherzustellen
Kafka wurde so konfiguriert, dass es seine standardmäßigen fsync-Einstellungen verwendet (d
h
fsync aus), und RabbitMQ wurde so konfiguriert, dass Nachrichten nicht beibehalten werden, während die Warteschlangen weiterhin gespiegelt werden
Basierend auf wiederholten Durchläufen haben wir uns entschieden, Kafka und Pulsar mit 200.000 Nachrichten/s oder 200 MB/s zu vergleichen, was unter der Durchsatzgrenze von 300 MB/s für eine einzelne Festplatte auf dieser Testumgebung liegt
Wir haben beobachtet, dass RabbitMQ bei Durchsätzen von mehr als 30.000 Nachrichten/s mit CPU-Engpässen konfrontiert war
Latenzergebnisse
Abbildung 12
End-to-End-Latenz für die für Hochverfügbarkeit konfigurierten Standardmodi, gemessen bei 200.000 Nachrichten/s (1 KB Nachrichtengröße) auf Kafka und Pulsar und bei nur 30.000 Nachrichten/s auf RabbitMQ, weil es a nicht aufrechterhalten konnte höhere Belastung
Hinweis: Latenz (ms) – niedriger ist besser
Kafka liefert durchweg niedrigere Latenzen als Pulsar
RabbitMQ erreicht die niedrigste Latenz unter den drei Systemen, aber aufgrund seiner begrenzten vertikalen Skalierbarkeit nur bei einem viel geringeren Durchsatz
Da das Experiment bewusst so eingerichtet wurde, dass die Verbraucher für jedes System immer mit den Herstellern mithalten konnten, wurden fast alle Lesevorgänge für alle drei Systeme aus dem Cache/Speicher bereitgestellt
Ein Großteil der Leistung von Kafka kann einer stark optimierten Leseimplementierung für Verbraucher zugeschrieben werden, die auf einer effizienten Datenorganisation basiert, ohne zusätzlichen Overhead wie das Überspringen von Daten
Kafka nutzt den Linux-Seitencache und den Zero-Copy-Mechanismus intensiv, um das Kopieren von Daten in den Benutzerbereich zu vermeiden
In der Regel verfügen viele Systeme, wie Datenbanken, über Caches auf Anwendungsebene, die ihnen mehr Flexibilität bei der Unterstützung zufälliger Lese-/Schreib-Workloads bieten
Für ein Messaging-System ist es jedoch eine gute Wahl, sich auf den Seitencache zu verlassen, da typische Workloads sequentielle Lese-/Schreibvorgänge ausführen
Der Linux-Kernel wurde viele Jahre lang optimiert, um diese Muster intelligent zu erkennen und Techniken wie Readahead einzusetzen, um die Leseleistung erheblich zu verbessern
In ähnlicher Weise ermöglicht es Kafka, auf dem Seiten-Cache aufzubauen, sendfile-basierte Netzwerkübertragungen zu verwenden, die zusätzliche Datenkopien vermeiden
In Übereinstimmung mit dem Durchsatztest haben wir auch denselben Test durchgeführt, indem wir Kafka so konfiguriert haben, dass jede Nachricht fsynct Hauptbuchspeicherung
Pulsar verwendet zusätzlich zum Linux-Seiten-Cache mehrere Caching-Ebenen, nämlich einen Readahead-Cache bei BookKeeper-Buchmachern (in unserem Test wurde der OMB-Standard von dbStorage_readAheadCacheMaxSizeMb=1024 beibehalten), ein verwaltetes Ledger ( managedLedgerCacheSizeMB , 20 % des verfügbaren direkten Speichers von 12 GB = 2,4 GB in unserem Test)
Wir haben in unserem Test keine Vorteile dieses Multi-Layer-Cachings festgestellt
Tatsächlich könnte mehrfaches Zwischenspeichern die Gesamtkosten der Bereitstellung erhöhen, und wir vermuten, dass die 12-GB-Off-Heap-Nutzung einiges an Polsterung enthält, um zu vermeiden, dass Java GC-Probleme mit direkten Bytepuffern auftreten, wie zuvor erwähnt.
Die Leistung von RabbitMQ ist ein Faktor sowohl der Austausche auf der Herstellerseite als auch der an diese Austausche gebundenen Warteschlangen auf der Verbraucherseite
Wir haben dieselbe Spiegelungskonfiguration aus den Durchsatzexperimenten für die Latenzexperimente verwendet, insbesondere direkte Austauschvorgänge und gespiegelte Warteschlangen
Aufgrund von CPU-Engpässen waren wir nicht in der Lage, einen höheren Durchsatz als 38.000 Nachrichten/s zu erreichen, und jeder Versuch, die Latenz bei dieser Rate zu messen, zeigte eine erhebliche Verschlechterung der Leistung mit einer p99-Latenz von fast zwei Sekunden 38.000 Nachrichten/s bis hinunter zu 30.000 Nachrichten/s ermöglichten es uns, einen stabilen Durchsatz zu etablieren, an dem das System nicht übermäßig ausgelastet zu sein schien
Dies wurde durch eine deutlich bessere p99-Latenz von 1 ms bestätigt
Wir glauben, dass der Overhead der Replikation von 24 Warteschlangen über drei Knoten einen tiefgreifenden negativen Einfluss auf die End-to-End-Latenz bei höheren Durchsätzen zu haben scheint, während Durchsätze von weniger als 30.000 Nachrichten/s oder 30 MB/s (durchgezogene magentafarbene Linie) es RabbitMQ ermöglichen liefern deutlich niedrigere End-to-End-Latenzen als die beiden anderen Systeme
Im Allgemeinen ermöglicht es RabbitMQ, begrenzte Latenzen bereitzustellen, wenn es seinen Best Practices folgt
Da die Latenzexperimente bewusst so angelegt wurden, dass die Verbraucher immer mit den Produzenten mithalten konnten, läuft die Effizienz der Messaging-Pipeline von RabbitMQ auf die Anzahl der Kontextwechsel hinaus, die die Erlang BEAM VM (und damit die CPU) ausführen muss um die Warteschlangen zu bearbeiten
Wenn Sie dies begrenzen, indem Sie jedem CPU-Kern eine Warteschlange zuweisen, erhalten Sie die geringstmögliche Latenz
Darüber hinaus ermöglicht die Verwendung von Direct- oder Topic-Exchanges ein ausgeklügeltes Routing (ähnlich wie Verbraucher, die einer Partition auf Kafka und Pulsar zugeordnet sind) zu bestimmten Warteschlangen
Der direkte Austausch bietet jedoch eine bessere Leistung, da kein Wildcard-Matching vorhanden ist, was mehr Overhead hinzufügt und die geeignete Wahl für diesen Test war
Abbildung 13
End-to-End-Latenz für Kafka, Pulsar und RabbitMQ, gemessen bei 200.000 Nachrichten/s (1 KB Nachrichtengröße) auf Kafka und Pulsar und 30.000 Nachrichten/s auf RabbitMQ
Einzelheiten finden Sie in den Rohergebnissen (Kafka, Pulsar und RabbitMQ)
Hinweis: Latenz (ms) – niedriger ist besser
Wir haben die Latenzergebnisse von Kafka in seiner standardmäßig empfohlenen fsync-Konfiguration (durchgezogene grüne Linie) bereits am Anfang dieses Abschnitts behandelt
In der alternativen Konfiguration, in der jede Nachricht von Kafka fsync auf die Festplatte übertragen wird (gepunktete grüne Linie), haben wir festgestellt, dass Kafka fast bis zum p99,9-Perzentil immer noch eine geringere Latenz als Pulsar aufweist, während Pulsar (blaue Linie) auf den höheren Perzentilen besser abschneidet
Während es schwierig ist, genaue Überlegungen zu Tail-Latenzen beim p99,9-Perzentil und darüber anzustellen, glauben wir, dass die nichtlineare Latenz, die beim p99,9-Perzentil für die alternative Kafka-fsync-Konfiguration (gepunktete grüne Linie) in die Höhe schießt, auf Eckfälle zurückgeführt werden könnte unter Einbeziehung des Kafka-Produzenten, da die Latenzen des Produzenten dem gleichen Trend zu folgen schienen
Latenz-Kompromisse
Abbildung 14
End-to-End-Latenz für RabbitMQ: gespiegelte Warteschlangen (in den Tests verwendete Konfiguration) im Vergleich zu klassischen Warteschlangen (keine Replikation) bei 10.000, 20.000, 30.000 und 40.000 Nachrichten/s
Hinweis: Die Skala auf der y-Achse ist in diesem Diagramm logarithmisch.
Wir erkennen an, dass jedes System mit bestimmten Kompromissen entwickelt wurde
Obwohl unfair gegenüber Kafka und Pulsar, fanden wir es interessant, RabbitMQ auch in einer Konfiguration zu vergleichen, die keine hohe Verfügbarkeit mit Kafka und Pulsar bietet, die beide niedrigere Latenzen gegen stärkere Haltbarkeitsgarantien und eine dreimal höhere Verfügbarkeit als RabbitMQ eintauschen
Dies könnte für bestimmte Anwendungsfälle (z
B
Gerätestandortverfolgung) relevant sein, bei denen es akzeptabel sein kann, die Verfügbarkeit gegen eine bessere Leistung einzutauschen, insbesondere wenn der Anwendungsfall Echtzeit-Messaging erfordert und nicht empfindlich auf Verfügbarkeitsprobleme reagiert
Unsere Ergebnisse zeigen, dass RabbitMQ niedrigere Latenzen bei höheren Durchsätzen besser aufrechterhalten kann, wenn die Replikation deaktiviert ist, obwohl selbst der verbesserte Durchsatz (100.000 Nachrichten/s) immer noch deutlich niedriger ist als das, was Kafka und Pulsar erreichen können
Obwohl Kafka und Pulsar langsamer sind ( ~5 ms bzw
~25 ms bei p99), die Haltbarkeit, der höhere Durchsatz und die höhere Verfügbarkeit, die sie bieten, sind absolut entscheidend für groß angelegte Event-Streaming-Anwendungsfälle wie die Verarbeitung von Finanztransaktionen oder die Bestandsverwaltung im Einzelhandel
Für Anwendungsfälle, die niedrigere Latenzen erfordern, kann RabbitMQ eine Latenz von p99 ~1 ms nur erreichen, solange es leicht belastet ist, da Nachrichten nur ohne Overhead der Replikation im Speicher in die Warteschlange gestellt werden
In der Praxis muss der Betreiber RabbitMQ sorgfältig bereitstellen, um es zu behalten Die Raten sind niedrig genug, um diese niedrigen Latenzen aufrechtzuerhalten, es sei denn, die Latenz verschlechtert sich schnell und erheblich
Aber diese Aufgabe ist pauschal über alle Anwendungsfälle hinweg schwer und praktisch unmöglich zu lösen
Insgesamt könnte eine bessere architektonische Wahl mit geringerem Betriebsaufwand und geringeren Kosten darin bestehen, ein einziges langlebiges System wie Kafka für alle Anwendungsfälle auszuwählen, wobei das System den besten Durchsatz mit niedrigen Latenzen über alle Laststufen hinweg bieten kann
Zusammenfassung
In diesem Blog haben wir eine gründliche, ausgewogene Analyse von drei Messaging-Systemen präsentiert: Kafka, RabbitMQ und Pulsar, die zu den folgenden Schlussfolgerungen führt
Durchsatz: Kafka bietet den höchsten Durchsatz aller Systeme und schreibt 15x schneller als RabbitMQ und 2x schneller als Pulsar.
Latenz: Kafka bietet die niedrigste Latenz bei höheren Durchsätzen und bietet gleichzeitig eine starke Haltbarkeit und hohe Verfügbarkeit
Kafka ist in seiner Standardkonfiguration in allen Latenz-Benchmarks schneller als Pulsar, und es ist bis zu p99.9 schneller, wenn es für jede Nachricht auf fsync eingestellt ist
RabbitMQ kann eine niedrigere End-to-End-Latenz als Kafka erreichen, jedoch nur bei deutlich niedrigeren Durchsätzen
Kosten/Komplexität: Die Kosten sind in der Regel eine umgekehrte Funktion der Leistung
Kafka als das System mit dem höchsten stabilen Durchsatz bietet aufgrund seines effizienten Designs den besten Wert (d
h
die Kosten pro geschriebenem Byte) aller Systeme
Tatsächlich bestätigt die Kafka-Reise von Twitter, sich von einer BookKeeper-basierten Architektur wie Pulsar zu entfernen, unsere Beobachtungen, dass Kafkas weniger bewegliche Teile die Kosten erheblich senken (bis zu 75 % im Fall von Twitter)
Darüber hinaus befindet sich die Arbeit zum Entfernen von ZooKeeper aus Apache Kafka (siehe KIP-500) weit im Untergrund und vereinfacht die Architektur von Kafka weiter
Während sich dieser Blogbeitrag ausschließlich auf die Leistung konzentriert hat, gibt es beim Vergleich verteilter Systeme noch viel mehr zu besprechen
Wenn Sie daran interessiert sind, mehr über die nuancierten Kompromisse beim Design verteilter Systeme für Kafka, Rabbit, Pulsar und ähnliche Systeme zu erfahren, bleiben Sie dran für einen nachfolgenden Blogbeitrag und sehen Sie sich diese Podcast-Episode an
In der Zwischenzeit, wenn Sie möchten mit Kafka loslegen, der schnellste Weg ist die Verwendung von Confluent Cloud
Wenn Sie sich anmelden, erhalten Sie 400 US-Dollar, die Sie in den ersten 60 Tagen in Confluent Cloud ausgeben können, und Sie können den Aktionscode CL60BLOG verwenden, um weitere 60 US-Dollar kostenlos zu nutzen.* Kostenlos starten
Alok Nikhil ist Software Engineer bei Confluent und arbeitet im Cloud-Native Kafka Team
Bevor er zu Confluent kam, arbeitete er an serverlosen relationalen Datenbanken bei Amazon Web Services und an leistungsstarken Vektorpaketprozessoren bei Cisco Research.
Testing Varnish Web Server Load Using Apache Benchmark Tool Update New
Neue Informationen zum Thema apache http server benchmarking tool
In this video will consist in benchmarking web server and Varnish with the ab tool and compare the response times and the CPU load in each case. In this particular example we will use the CentOS 7 server, but you can use any distribution and obtain similar results. Watch the load average in top and the Requests per second line in the output of ab.
Read More on how to install Varnish Cache in CentOS, RHEL, Fedora, Debian and Ubuntu
http://www.tecmint.com/install-varnish-cache-web-accelerator/
apache http server benchmarking tool Ähnliche Bilder im Thema

GitHub – giltene/wrk2: A constant throughput, correct … Update New
23/09/2019 · a HTTP benchmarking tool based mostly on wrk. … To handle the initial connection burst the server‘s listen(2) backlog should be greater than the number of concurrent connections being tested. … disruption (introduced using ^Z on the apache process for simple effect). As can be seen in the output, there is a dramatic difference between the …
Apache Benchmarking using AB in linux New
Weitere hilfreiche Informationen im Thema anzeigen apache http server benchmarking tool
About AB
================
ab is a tool for benchmarking your Apache Hypertext Transfer Protocol (HTTP) server. It is designed to give you an impression of how your current Apache
About Apache
==============================
The Apache HTTP Server Project is an effort to develop and maintain an open-source HTTP server for modern operating systems including UNIX and Windows.
About Linux
===========================
Linux is a Unix-like computer operating system assembled under the model of free and open-source software development and distribution
Subscribe Our Channel For New Tech Learning Video
★★★ Follow ★★★
https://www.instagram.com/dailytechlearning/
apache http server benchmarking tool Ähnliche Bilder im Thema

Sie können weitere Informationen zum Thema anzeigen apache http server benchmarking tool
Updating
Suche zum Thema apache http server benchmarking tool
Updating
Sie haben gerade den Thementitel angesehen apache http server benchmarking tool
Articles compiled by Musicsustain.com. See more articles in category: MMO