我有一个启用了最大流量限制的进程。该值设置为 10。它是一个异步进程,用于每天获取数千条消息。我们注意到,在高峰期,随着EMS服务器队列中消息的增加,tibco进程的性能下降。 Tibco 的速度缓慢与 EMS 消息流入的增加之间是否存在任何依赖性?如何计算过程的精确流量限制?我们有标准程序吗?
The FlowLimit
配置设置是 BusinessWorks 设置,因此我假设您有 BusinessWorks 引擎正在使用来自 EMS 队列的消息。
流控制概念的存在是为了确保 BusinessWorks 引擎的传入事件数不会导致 JVM 超出其可用内存资源。 BusinessWorks 通过暂时禁用流程启动器直到内存中的作业数量低于阈值来实现流量控制。对于基于 EMS 的流程启动器,这需要关闭MessageConsumer
,这会导致 EMS 停止向进程传递消息。在大容量消息传递场景中,这将导致 EMS 服务器上的消息积压。此外,它还会导致客户端预取缓存中的任何消息重新确定优先级,以便在 EMS 服务器端重新传送。发生这种情况时,您会注意到 EMS 统计信息中的出站消息计数大于入站消息计数。
您最好避免进入流量控制场景。您现在的是FlowLimit
对于分配给 JVM 的堆大小和正在使用的消息有效负载大小,参数是否现实?您可以增加 JVM 堆大小以及您的FlowLimit
?您是否能够运行从同一个队列分派的 BusinessWorks 应用程序的多个实例,以提高可伸缩性?这些方法可以帮助您扩展并避免消息积压。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)