Welche Schritte können unternommen werden, um TIBCO JMS zu optimieren, um mehr aufführender zu sein?

StackOverflow https://stackoverflow.com/questions/5006886

Frage

Wir führen ein hohes Durchsatzsystem aus, das TIBCO-EMS JMS verwendet, um eine große Anzahl von Nachrichten an und von unserem Hauptserver an unsere Clientverbindungen zu übergeben.Wir haben einige Statistiken getan und haben festgestellt, dass JMS die viel Latenz verursacht.Wie können wir Tibco JMS mehr künstler machen?Gibt es Ressourcen, die zu diesem Thema eine gute Diskussion ergeben.

War es hilfreich?

Lösung

Verwenden von nicht persistenten Nachrichten ist eine Option, wenn Sie keine Persistenz benötigen. Beachten Sie, dass auch wenn Sie Persistenz benötigen, manchmal besser, um nicht persistente Nachrichten zu verwenden, und im Falle eines Absturzes führen Sie eine andere Wiederherstellungsaktion (wie die Resenden aller Nachrichten) aus.

Dies ist relevant, wenn:

  • Abstürze sind selten (wie die Wiederherstellung Zeit braucht)
  • Sie können leicht einen Absturz erkennen
  • Sie können mit doppelten Nachrichten verarbeiten (Sie wissen möglicherweise nicht genau, welche Nachrichten vor dem Absturz geliefert wurden

    ems bietet auch einige Mechanismen, die anhaltend sind, aber weniger Kugelfestigkeit, dann klassische garantierte Lieferung Dazu gehören:

    • Anstelle von "genau einmal" Message-Lieferung können Sie "mindestens einmal" oder "bis zu einmal" verwenden.
    • Sie können den PRE-FETCH-Mechanismus verwenden, der dazu führt, dass der Client, dass der Client Meldungen an den Speicher abholt, bevor Ihre Anwendung sie anfordert.

Andere Tipps

ems sollte nicht der Flaschenhals sein. Ich habe das Testen getan und wir haben einen Shit-Laden von Durchsatz auf unserem Server erhalten.

Sie müssen versuchen, zu bestimmen, wo der Flaschenhals ist. Ist das Problem im Produzenten der Nachricht oder des Verbrauchers. Sind Nachrichten auf der Warteschlange aufgehoben.

In welcher Art von Szenario machst du?

PUB / SUP oder ANFRAGE ANFRAGE? Haben Sie eine temporäre Warteschlange auf. Zu viele temporäre Warteschlangen können Leistungsfragen verursachen. (Meistens, wenn sie verweilen, weil Sie etwas richtig geschlossen haben)

Veröffentlichen Sie ein Thema mit dauerhaften Abonnenten, wenn ja. Versuchen Sie, das Thema, um die Warteschlange zu überbrücken und von denen zu lesen. Durable Abonnenten können auch zu einem kleinen HICCUP in der Leistung führen, da er verfolgen muss, wer Kopien aller Nachrichten hat.

Stellen Sie sicher, dass Ihr Sendevorgang eine Sitzung und mehrere Anrufe durch diese Sitzung hat. Öffnen Sie keine vollständige Sitzung für jeden Vorgang. Verwenden Sie nach Möglichkeit erneut. Mache das gleiche für den Verbraucher.

Stellen Sie sicher, dass Sie schließen, wenn Sie fertig sind. EMS macht die Dinge nicht klar. Wenn Sie also eine Verbindung herstellen und Ihre App einfach schließen, ist die Verbindung noch vorhanden und saugt Ressourcen an.

Überprüfen Sie Ihre Toleranz für verlorene Nachrichten an einem Absturz. Wenn Sie Client ACK machen, und es spielt keine Rolle, ob Sie die Bearbeitung der Nachricht abstürzen, dann wechseln Sie zu AUTO. Ich glaube auch, ob Sie (TEMS - TIBCO EMS für WCF) verwenden, ein Problem mit der Sitzung anerkennen. Eine Nachricht ist also nur, wenn es auf der gesamten Botschaft verarbeitet wird, von Client ACK auf denjenigen, der DUPS OK hatte, und es funktionierte besser)

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