繁体   English   中英

可以采取哪些步骤来优化tibco JMS以提高性能?

[英]What steps can be taken to optimize tibco JMS to be more performant?

我们正在运行一个高吞吐量的系统,该系统利用tibco-ems JMS将大量消息往返于主服务器与客户端连接之间传递。 我们已经进行了一些统计,并确定JMS是造成大量延迟的原因。 如何使tibco JMS更具性能? 是否有任何资源可以很好地讨论该主题。

如果您不需要持久性,则使用非持久性消息是一种选择。 请注意,即使您确实需要持久性,有时也最好使用非持久性消息,如果发生崩溃,请执行其他恢复操作(例如重新发送所有消息)

这在以下情况下是相关的:

  • 崩溃很少(因为恢复需要时间)
  • 您可以轻松检测到崩溃
  • 您可以处理重复的消息(崩溃前您可能不知道确切地传递了哪些消息

EMS还提供了一些持久的机制,但是比经典的保证交付要少的防弹措施包括:

  • 您可以使用“至少一次”或“最多一次”传递,而不是“仅一次”传递消息。
  • 您可以使用预提取机制,该机制使客户端在应用程序请求消息之前将消息提取到内存。

EMS不应成为瓶颈。 我已经完成了测试,并且服务器上的吞吐量非常低。

您需要尝试确定瓶颈在哪里。 是消息的产生者还是消费者的问题。 消息是否堆积在队列上。

您正在执行哪种类型的方案。

发布/订阅还是要求回复? 你有临时队列堆积吗? 过多的临时队列可能会导致性能问题。 (通常是因为他们没有正确关闭某些东西而让他们流连忘返)

您是否向持久订阅者发布主题? 尝试桥接主题以排队并从中读取内容。 持久的订户也会导致性能下降,因为它需要跟踪谁拥有所有邮件的副本。

确保您的发送过程中只有一个会话,并且该会话中有多个呼叫。 不要为每个操作打开完整的会话。 尽可能重复使用。 为消费者做同样的事情。

完成后,请确保关闭。 EMS无法解决问题。 因此,如果您建立连接并仅关闭您的应用程序,则该连接仍然存在并占用资源。

即使发生崩溃,也要检查您对丢失消息的容忍度。 如果您正在执行Client ack,而崩溃处理消息也没关系,请切换到自动。 我也相信,如果您正在使用(TEMS-用于WCF的Tibco EMS),则会话确认存在问题。 因此,只有在处理完整个邮件后,我们才会从客户端ACK切换到可以正常运行Dups且效果更好的邮件)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM