Best apache http server benchmarking tool Update

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 …

+ hier mehr lesen

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

Video unten ansehen

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

 New  Apache Bench - How to Load Test Web Server
Apache Bench – How to Load Test Web Server Update

CIS Benchmarks – CIS Center for Internet Security Update New

CIS Benchmarks help you safeguard systems, software, and networks against today’s evolving cyber threats.

+ hier mehr lesen

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

Video ansehen

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

 New  How to Use Apache Bench to Load Test Your Website (ab linux command tutorial)
How to Use Apache Bench to Load Test Your Website (ab linux command tutorial) New Update

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

Video unten ansehen

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

 Update  Install Apache Benchmark Tool (AB) - Windows 10 - No commentary
Install Apache Benchmark Tool (AB) – Windows 10 – No commentary New Update

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

Video ansehen

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

 Update New  Testing Varnish Web Server Load Using Apache Benchmark Tool
Testing Varnish Web Server Load Using Apache Benchmark Tool Update

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 …

+ mehr hier sehen

Apache Benchmarking using AB in linux New

Video unten ansehen

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

 New Update  Apache Benchmarking using AB in linux
Apache Benchmarking using AB in linux Update

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

Leave a Comment