Rabbitmq - Angemessene Leistung / Skalenerwartungen

13

Ich wäre Ihnen dankbar, wenn jemand mich auf einige vernünftige Größenordnungen / Einschränkungen für rabbitmq (auf "durchschnittlicher" Hardware, fwiw) hinweisen oder Ihre Erfahrungen mit der Leistung veröffentlichen könnte. Ich versuche ein Gefühl der Kapazität für die Anzahl der Warteschlangen, die Anzahl der Abonnenten in den Warteschlangen, die Auswirkungen auf die Leistung, wenn Hunderte oder Tausende von Zuhörern in Fanout-Warteschlangen sind, sowie für alle harten Zahlen, mit denen jemand in einer Umgebung mit hoher Kapazität Kaninchen laufen lässt.

user21640
quelle
Dies ist extrem einfach zu testen, insbesondere wenn man bedenkt, dass Sie mit den erwarteten Zahlen ein Budget haben, um einige VMs fertig zu machen. Ich schlage vor, Sie testen es basierend auf Ihrem genauen Anwendungsfall und der Hardware, die Sie voraussichtlich verwenden werden.
Andrew M.
Schauen Sie sich die Pläne von CloudAMQP an - dies sind getestete Leistungszahlen für bestimmte Hardwarekonfigurationen.
Wiedereinsetzung von Monica - M. Schröder

Antworten:

11

Zuallererst müssen Sie verstehen, welche Elemente in Ihrer Liste Skalierungsbeschränkungen haben, die Sie möglicherweise treffen, und welche nicht. Einige davon sind implementierungsabhängig, so dass es hilfreich ist, sich über Interna zu informieren, beispielsweise über das Buch RabbitMQ in Action.

Die Anzahl der Warteschlangen ist durch Ihren Arbeitsspeicher begrenzt. Die Anzahl der abgespielten Nachrichten ist hingegen nicht durch den Arbeitsspeicher begrenzt, da RabbitMQ sie automatisch auf die Festplatte auslagert. Einmal habe ich versehentlich fast 8 Millionen Nachrichten auf einem Entwicklungsserver abgespielt, als ich nicht aufgepasst habe.

Es gibt auch keine Begrenzung für die Nachrichtengröße, aber Sie sollten wirklich zweimal überlegen, ob die Größe einer einzelnen Nachricht 512 KB überschreitet. Ich habe schließlich einen Speichercache verwendet, um große Objekte zwischen Anwendungen zu übertragen, und nur kleinere Steuernachrichten gesendet, die einen Memcache-Schlüssel enthielten. Aber wenn Sie wirklich wollen, können Sie riesige JPEGs und binäre Objekte wie JAR-Dateien als Nachrichten senden.

Die Anzahl der Abonnenten ist ein OS-Limit, da ein Abonnent mindestens einen offenen TCP-Socket benötigt. Das ist natürlich in den meisten Betriebssystemen einstellbar, sodass Ihre Laufleistung variiert und Sie deshalb Ihr Modell testen müssen. Ich habe JMETER zum Laden unserer Webanwendungen verwendet und gerade dieses AMQP-Plugin entdeckt: https://github.com/jlavallee/JMeter-Rabbit-AMQP , habe es aber noch nicht verwendet. In jedem Fall ist dies die Art von Test, mit der Sie schnell feststellen können, wie Ihre Hardware (oder VM-Konfiguration) angemessen umgeht.

Das einzige Problem, das Sie haben, ist das Testen einer großen Anzahl von Verbrauchern in den Fanout-Warteschlangen. Möglicherweise möchten Sie stattdessen auch einen Themenaustausch mit Verbrauchern vergleichen, die einen Platzhalter (*) als Bindungsschlüssel verwenden, um dasselbe Endergebnis zu erzielen. Versuchen Sie, diesen Test mit so vielen verschiedenen Computern wie möglich durchzuführen, um sicherzustellen, dass Sie nicht auf einen Engpass stoßen, der durch einen einzelnen Server verursacht wird, auf dem Verbraucherprozesse ausgeführt werden. PS: Das Jmeter-Plugin scheint auch nützlich zu sein, um Verbraucher zu simulieren.

Michael Dillon
quelle
6

Dies ist keine wirklich beantwortbare Frage - es gibt zu viele Faktoren (die sich ändernde Definition von "durchschnittlicher" Hardware, die Größe der Nachrichten in der Warteschlange, die Anzahl der Konsumenten und wie oft sie abfragen / wie schnell sie in Nachrichten arbeiten usw.) .). Sie müssen Ihre Umgebung wirklich bewerten.

Schauen Sie sich dennoch einige dieser Diskussionen über die RabbitMQ-Leistung an (einschließlich einiger Ideen, wie Sie Ihre Installation einem Benchmark unterziehen können, um zu sehen, was Sie von Rabbit erwarten können):

voretaq7
quelle
1
Mir sind die vielen Variablen bekannt. Aus diesem Grund habe ich Dinge wie "durchschnittliche" Hardware in Anführungszeichen erwähnt, da ich verstehe, wie unscharf eine Idee ist. Trotzdem dachte ich, dass einige Zahlen, die aus den Erfahrungen der Menschen stammen, nützlich wären. Danke für die Hinweise.
user21640
1
@ user21640 Es ist nicht nur die Hardware, die Ihre Frage aufwirbelt - High-Frequency Trading hat möglicherweise eine andere Vorstellung von "hoher Kapazität" als Sie oder ich und sehr unterschiedliche Definitionen akzeptabler Leistung. Letztendlich ist die einzige Person, deren Erfahrung Sie, in Ihrer Umgebung und meiner Erfahrung nach, eine gut geplante lokale Benchmark wertvoll, wenn es um Vertrauen in die Kapazitätsplanung geht. Sie wissen nie, wann Ihre Arbeitsbelastung der pathologische Fall ist: -)
voretaq7