我们正在运行一个高吞吐量系统,该系统利用tibco-ems JMS将大量消息传入我们的主服务器并传递给我们的客户端连接。我们已经做了一些统计并确定JMS会导致很多延迟。我们如何才能使tibco JMS更高效?有没有任何资源可以对这个主题进行很好的讨论。可以采取哪些步骤优化tibco JMS以提高性能?
1
A
回答
2
如果您不需要持久性,则使用非持久消息是一种选择。 请注意,即使你需要坚持,有时它更好地使用非持久性消息,并在发生碰撞的情况下执行不同的恢复操作(如重新发送的所有邮件)
这是相关的,如果:
- 崩溃是罕见的(为恢复需要时间)
- 你可以很容易地检测到崩溃
- 您可以处理重复消息(您可能不知道到底哪些消息崩溃
EMS还提供了一些机制,是持久的,但防弹小于经典保证交付 其中包括:
- ,而不是“只有一次”的消息传递,您可以使用“至少一次”或“最高一次“交付。
- 您可以使用预取机制,使客户端在您的应用程序请求它们之前将消息提取到内存。
0
EMS不应该是瓶颈。我已经完成了测试,并且我们在服务器上得到了一大堆吞吐量。
您需要尝试确定瓶颈在哪里。消息生产者或消费者是否存在问题?消息堆积在队列中。
你在做什么类型的场景。
Pub/sup or request reply? 你是否有临时队列堆积。太多的临时队列可能会导致性能问题。 (主要是当他们逗留,因为你没有妥善关闭某些东西)
如果是的话,你是否正在发布一个拥有持久订阅者的主题。尝试桥接主题排队和阅读。由于需要跟踪谁拥有所有消息的副本,耐用用户可能会导致性能出现一些小问题。
确保您的发送进程在该会话中有一个会话和多个呼叫。不要为每个操作打开一个完整的会话。尽可能重复使用。为消费者做同样的事情。
确保您完成后关闭。 EMS没有把事情搞清楚。因此,如果您建立连接并关闭应用程序,则连接仍然存在,并吸取资源。
在发生碰撞事故时检查您对丢失信息的容忍度。如果您正在进行客户端确认,并且无论您是否处理该消息时崩溃,都切换到自动。另外我相信,如果您使用(TEMS - Tibco EMS for WCF),会话确认会出现问题。所以一条消息只有当它在整个消息上处理时,我们从客户端ACK切换到具有Dups ok并且它工作得更好的那个)
相关问题
- 1. 您采取了哪些步骤来提高Sharepoint网站的性能?
- 2. 可以采取哪些步骤来消除我的代码中的错误?
- 3. 哪种方法可以提高性能?
- 4. 在Win2008上可以进行哪些优化以进一步提高NetTcpBinding WCF的吞吐量?
- 5. 我应该采取哪些步骤来使视频难以下载?
- 6. 我需要采取哪些步骤来使用WCF回调?
- 7. roslyn可以提供哪些代码优化
- 8. 需要采取哪些步骤在设备上实现OpenCL?
- 9. GCC优化步骤
- 10. 并发性可以提高性能吗?
- 11. 哪些功能可以提高Web应用程序的可用性
- 12. 应该索引哪些内容以提高性能?
- 13. 可以进一步提高查询性能(MySQL)
- 14. const-correctness可以提高性能吗?
- 15. 可以采取哪些步骤将xcode生成的ipa文件放到测试ios设备上?
- 16. 我的结帐按钮丢失,我可以采取哪些步骤进行诊断?
- 17. 快照或动态集 - 哪一个可以提高性能?
- 18. 我可以做些什么来提高查询性能?
- 19. LLVM进行哪些优化以及前端必须实现哪些优化?
- 20. WPF VirtualizingStackPanel以提高性能
- 21. 提高性能
- 22. 可以应用哪些通用技术来优化SQL查询?
- 23. 步骤返回值优化
- 24. 最小化malloc()调用的数量可以提高性能?
- 25. 对Ruby的diff实现进行这些优化是否可以提高Rails应用程序的性能?
- 26. 这可以进一步优化
- 27. 如何显示某个单词可以使用哪些优化?
- 28. 可以对此Haskell代码进行哪些优化?
- 29. 我应该采取哪些诊断步骤来修复此授权?
- 30. 需要遵循哪些步骤才能使对象不可变?
你有没有试过问过Tibco?它仍然是一个商业产品不是吗?最好的信息可能来自他们。你能发布你所看到的延迟和你正在做什么测试吗?例如你是否启用了持久性?我希望他们在1毫秒左右的时间内收到一条短信。 – 2011-02-15 17:42:24
我们确实启用了持久性。这可能是我们将要采取的第一步,以减少延迟。另一个是减少日志记录级别。询问Tibco是个好建议。谢谢 – richs 2011-02-16 14:35:49