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.
performance
rabbitmq
user21640
quelle
quelle
Antworten:
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.
quelle
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):
quelle