Frage

Wir versuchen, den HORNETQ-Speicher- und Vorwärtsmechanismus zu verwenden ... Die Weiterleitung von Nachrichten von einer Standalone HornetQ-Instanz mit der Kernbrücke ist jedoch sehr langsam. Wir konnten den Durchsatzrate über 200 Nachrichten pro Sekunde nicht erhöhen.

Die überraschende Tatsache ist, dass, wenn wir denselben Client hinweisen (dabei, Nachrichten an die Weiterleitung HornetQ-Instanz) direkt an der Destination HornetQ-Instanz zu veröffentlichen, eine Durchsatzrate von über 1000 Nachrichten pro Sekunde beobachten (dieser Kunde ist JMS-basiert ). Dies bedeutet im Wesentlichen, dass die Kernbrücke, die zwischen der Weiterleitungs-HornetQ-Instanz konfiguriert wurde, und der Instanz der Ziel-HornetQ-Instanz ist problematisch.

Im Folgenden sind die relevanten Abschnitte zum Konfigurieren der Kernbrücke auf der Weiterleitung HORNETQ:

generasacodicetagpre.

Im Folgenden sind die relevanten Abschnitte zum Konfigurieren der Kernbrücke auf dem Ziel HornetQ:

generasacodicetagpre.

Alle Systemvariablen (CPU / Speicher / Festplatte IO / Network / etc.) werden nicht ausgerüstet und es gibt keine Fehler in den Protokollen.

Note : Wir haben sowohl mit Nio als auch mit dem Erbe / alten IO ausprobiert. Dies wurde sowohl mit HORNETQ-2.2.5-Finale als auch bei HorneetQ-2.2.8-GA (2.2.8-Ga aus der Quelle) probiert)

jede Idee, was dieses Problem verursachen könnte und was die Auflösung sein könnte?

Andere Beobachtungen : Es sieht so aus, als ob die Nachrichten durch die Kernbrücke gesendet werden

War es hilfreich?

Lösung

ok .. ich habe das für mich herausgefunden.

Wenn die Weiterleitung HORNETQ eine Brücke erstellt, verwendet es intern nur einen Thread zum Senden der Nachrichten über die Brücke und eröffnet nur eine Verbindung zum Ziel HornetQ. Somit kann es nicht in der Lage sind, mehrere Prozessoren nutzen zu können, und ist auch durch das Netzwerk (Latenz / Bandbreite / RTT) begrenzt und kann das Senden von Nachrichten nicht effektiv parallelisieren. Wenn Sie also einen hohen Durchsatz haben, schlagen Sie an, eine Kappe zu treffen (in unserem Fall etwa 200 Nachrichten pro Sekunde). Sie können dies erhöhen, indem Sie den HorneteQ-Anschluss- und Akzeptorparametern (wie die TCP-Senden- und Empfangspuffergrößen) und Bridge-Einstellungen (Bestätigungsfenstergröße) steigern ).

Die Lösung - Erstellen Sie mehrere Bridges zwischen demselben Paar von Weiterleitungs- und Ziel-HornetQ-Instanzen (mit denselben Warteschlangen). Dies parallel effektiv die Übertragung von Nachrichten und erhöht somit den Durchsatz. Die Erstellung von drei Brücken verdreifachte den Durchsatz fast 870 Nachrichten pro Sekunde.

JBoss muss diese Parallelisierung idealerweise in der Kernbrücke konfigurieren.

Andere Tipps

Ich glaube, Sie haben 2.2.5 verwendet (es ist nicht klar von Ihrem Beitrag, in welcher Version Sie verwendet haben), die einen Fehler bei den Brücken hatten, die das Thema, das Sie sagten, dass Sie sagen.

Bei einiger Version sendet die Bridge Nachrichten synchron, anstatt auf die asynzischen Bestätigungen zu zählen.

Schauen Sie sich an, wie sich die neueste Version verhalten würde.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top