2014-04-10 16 views
37

Ich möchte wissen, wie viele maximale Warteschlangen RabbitMQ auf einem einzelnen Server verarbeiten kann?RabbitMQ - Wie viele Warteschlangen kann RabbitMQ auf einem einzelnen Server verwalten?

Kommt es auf RAM an? Kommt es auf Erlang Prozesse an?

+1

Kann RabbitMQ Server 10 Millionen Warteschlangen verwalten? Wie viel Speicher benötigt mein Server? –

+0

@ N.B. - Nein ist es nicht hardware bezogen :), es ist über die Verarbeitung von Anfragen über RabbitMQ –

+3

Ich stimme zu, dass ich Hardware in Betracht ziehen sollte, aber Hardware-Ingenieur kann diese Frage nicht beantworten :) ..diese Frage braucht Kenntnisse von rabbitMQ Server, Messaging Queue-Protokoll und zuletzt aber nicht zuletzt, wie viel% des Speichers rabbitMQ braucht (ich denke, es ist 40% des gesamten RAM) –

Antwort

32

Innerhalb des RabbitMQ-Brokers gibt es keine fest codierten Limits. Der Broker wird alle verfügbaren Ressourcen nutzen (es sei denn, Sie haben für einige von ihnen Einschränkungen festgelegt, sie heißen Wasserzeichen in der RabbitMQ-Terminologie).

Es gibt einige Einschränkungen von Erlang selbst, wie maximale Anzahl gleichzeitiger Prozesse, aber wenn Sie theoretisch auf einzelnen Knoten erreichen können, dann ist es immer eine gute Idee, distributed features zu verwenden.

Es gibt viele Diskussionen über RabbitMQ Ressourcennutzung und Grenzen,

P.S. Es gibt jedoch ein AMQP-Protokolllimit.Sie werden im Abschnitt 4.9 Limitations

Die AMQP-Spezifikationen diese Grenzen für zukünftige Erweiterungen von AMQP verhängen oder Protokollen aus dem gleichen Draht-Level-Format:

  • Anzahl der Kanäle pro Verbindung: 16-Bit-Kanal Nummer.
  • Anzahl der Protokollklassen: 16-Bit-Klassen-ID.
  • Anzahl der Methoden pro Protokollklasse: 16-Bit-Methoden-ID.

Die AMQP-Spezifikationen diese Grenzen auf Daten erheben:

  • Maximale Größe eines kurzen String: 255 Bytes.
  • Maximale Größe einer langen Zeichenfolge oder Feldtabelle: 32-Bit-Größe.
  • Maximale Größe einer Frame-Nutzlast: 32-Bit-Größe.
  • Maximale Größe eines Inhalts: 64-Bit-Größe.

Der Server oder Client kann auch seine eigenen Grenzen auf Ressourcen wie als Anzahl gleichzeitiger Verbindungen, die Anzahl der Verbraucher pro Kanal, Anzahl der Warteschlangen verhängen, usw. Diese haben keine Auswirkungen auf die Interoperabilität und sind nicht angegeben.

16

Dieser Beitrag kann Ihnen helfen:

http://rabbitmq.1065348.n5.nabble.com/Max-messages-allowed-in-a-queue-in-RabbitMQ-td26063.html

EDIT

1) Max in RabbitMQ erlaubt Warteschlangen?

Tausende (oder sogar Zehntausende) von Warteschlangen sollten überhaupt kein Problem sein, obwohl jedes Objekt (beispielsweise Warteschlangen, den Austausch, Bindungen, usw.) irgendein Gedächtnis und/oder Speicherplatz in Anspruch nehmen. Standardmäßig wird Erlang eine maximale Anzahl von gleichzeitigen Prozessen erzwingen (d. H. Leichte Threads) bei etwa 32768 IIRC. Jede Warteschlange wird von einem eigenen Prozess verwaltet und jede Verbindung kann zu mehreren weiteren führen. Wenn Sie also planen, haben Sie eine sehr große Anzahl aktiver Warteschlangen in einem einzigen Knoten (?) Und verwenden sie alle gleichzeitig , dann müssen Sie möglicherweise zwicken die Emulator Argumente Kaninchen passiert die VM durch Setzen von + P auf eine höhere Grenze.

Sie werden wahrscheinlich auch viele GB nur mit dem Overhead für jede Warteschlange/Verbindung ziemlich schnell verbrauchen, so dass Sie einen ziemlich fleischigen Server benötigen, um Millionen von beiden zu behandeln. Zehntausende sollten überhaupt kein Problem haben, sofern sie in den Arbeitsspeicher passen.

+1

Netter Beitrag. im Grunde möchte ich technische Antwort für Ex. 1GB RAM kann so viel Anfrage hängen ..wie dies - so dass ich entscheiden kann, sollte ich RAM erhöhen –

+2

Wie Sie auf dem Post lesen können: "so wenn Sie planen, eine sehr große Anzahl von aktiven Warteschlangen in einem einzigen Knoten (?) und sie alle gleichzeitig verwenden, dann müssen Sie möglicherweise die Emulatorargumente zwicken, die Kaninchen die VM überschreitet, indem Sie + P auf ein höheres Limit setzen. " Sie müssen also eine echte Simulation erstellen, da die Zahl hängt von den Aktivitäten ab .. Verbindungen .. dann können Sie dedice. – Gabriele

+0

Sie sollten einige Zitate von dieser Seite hinzufügen, da es weggehen könnte. – Beryllium