我们正在运行高吞吐量系统,利用Tibco-EMS JMS将大量消息传递给我们的主服务器到客户端连接。我们已经完成了一些统计数据,并确定了JMS是导致大量延迟。我们如何使TIBCO JMS更加表现?是否有任何资源,可以讨论这一主题。

有帮助吗?

解决方案

如果您不需要持久性,使用非持久性消息是一个选项。 请注意,即使您确实需要持久性,有时候使用非持久性消息更好,并且在崩溃的情况下执行不同的恢复操作(如重新发送所有消息)

如果:

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

    EMS还提供了一些持久的机制,但较少的子弹证明然后经典保证交付 这些包括:

    • 而不是“完全一旦一次”消息传递,您可以使用“至少一次”或“最多一次”交付。
    • 您可以使用预取机制,使客户端将消息获取到内存之前的内存之前。

其他提示

EMS不应该是瓶颈。我已经完成了测试,我们在我们的服务器上吞下了吞吐量的困难。

您需要尝试确定瓶颈部的位置。是消息的生产者或消费者的问题。是队列上堆积的消息。

你在做什么类型的场景。

pub / sup或请求回复? 你有临时队列堆积。太多的临时队列可能导致性能问题。 (主要是当他们徘徊时,因为你没有正确关闭一些东西)

如果是,您是否是用耐用的订阅者发布主题。尝试将主题缩短到队列和读取那些。耐用的订阅者可能在性能中造成一点打嗝,因为它需要跟踪谁有所有消息的副本。

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

确保完成后关闭。 EMS并不清楚事情。因此,如果您建立连接并仅关闭您的应用,则连接仍然存在并吸入资源。

在崩溃中审查丢失消息的容忍度。如果您正在执行客户端ACK,如果您在处理消息时无关紧要,则切换到自动。此外,我相信如果您正在使用(TEMS - WCF的TIBCO EMS)会议确认存在问题。所以只有在整个消息上处理时,我们只有在整个消息上处理时,我们将从客户端ACK切换到符合DUP的那个,它更好地工作)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top