【问题标题】:Very high number of threads in active use in Cadence clusterCadence 集群中活跃使用的线程数量非常多
【发布时间】:2022-06-13 15:44:32
【问题描述】:

在执行 cadence 集群的负载测试时,我们看到非常多的线程 (> 4000),并且一直如此消耗大量 CPU 和内存。当没有外部信号或活动工作流时,它仍然是这样。我已禁用粘性工作流选项,因此不应缓存任何工作流,而是线程数不会下降。有没有办法进一步解决这个问题?

【问题讨论】:

  • 是在Cadence server cluster还是client worker中?
  • 这发生在客户端工作人员身上
  • 你用的是哪个sdk?
  • 3.6.2,我觉得这是最新的
  • @LongQuanzheng,如果我在 Spring Boot 应用程序中使用这个 SDK,我是否应该创建一个 WorkflowClient 实例以在整个应用程序中使用,现在我正在创建一个客户端,只要有新的请求。这会导致过多的线程数和 JVM 堆空间问题吗?

标签: cadence-workflow temporal-workflow uber-cadence


【解决方案1】:

我能够确定问题所在。问题是每个请求创建多个WorkflowClient。每个工作流客户端都会引导自己的任务列表和线程池来分派任务。

在基于 Java 的应用程序中,我们应该为要编排的每个流创建单个工作流客户端。例如,我正在创建工作流来协调电子商务应用程序中的订单发货,因此我创建了单个工作流客户端,一个用于正向旅程,另一个用于反向。它就像一个魅力。

【讨论】: