当前位置: 首页 > 知识库问答 >
问题:

时间/节奏性能调整

晏永康
2023-03-14

有人能帮我了解以下情况吗?我有1个工人配置如下:

workerOptions := worker.Options{
    BackgroundActivityContext:               ctx,
    MaxConcurrentWorkflowTaskPollers:        10,
    MaxConcurrentActivityTaskPollers:        20,
    MaxConcurrentWorkflowTaskExecutionSize:  256,
    MaxConcurrentLocalActivityExecutionSize: 256,
    MaxConcurrentActivityExecutionSize:      256,

如果我将“最大当前工作流任务可执行文件大小”和“最大当前活动可执行文件大小”设置为 1024,则工作线程开始工作太慢。我认为增加这两个选项将有助于处理更多的活动和工作流任务,但它的工作方式不同。工作线程具有足够的 CPU/RAM,并且他根本没有过载。

从临时UI中,我能够捕捉到一些工作流在这样的历史状态下冻结了一段时间:

1 WorkflowExecutionStarted Aug 10th 10:40:17 am CLOSE TIMEOUT 30m
2 WorkflowTaskScheduled Aug 10th 10:40:17 am TASKQUEUE temporal-basic

我还调整了这样的匹配参数:

matching.numTaskqueueReadPartitions:
- value: 100
  constraints: {}
matching.numTaskqueueWritePartitions:
- value: 100
enter code here

此外,当我不时使用不同配置的 worker 时,我可能会在历史记录服务上收到此类错误:

temporal-history-5f8757cc4f-v8h94 temporal-history {"level":"error","ts":"2021-08-09T22:26:09.181Z","msg":"Fail to process task","service":"history","shard-id":255,"address":"10.218.13.7:7234","shard-item":"0xc09d263700","component":"transfer-queue-processor","cluster-name":"active","shard-id":255,"queue-task-id":2213997,"queue-task-visibility-timestamp":"2021-08-09T22:26:00.658Z","xdc-failover-version":0,"queue-task-type":"TransferActivityTask","wf-namespace-id":"4b775794-a076-499e-aa11-177db696d780","wf-id":"basic-workflow-30-0-5-3523","wf-run-id":"fc82334c-b57d-4d08-8c0d-480b6156b995","error":"context deadline exceeded","lifecycle":"ProcessingFailed","logging-call-at":"taskProcessor.go:332","stacktrace":"go.temporal.io/server/common/log.(*zapLogger).Error\n\t/temporal/common/log/zap_logger.go:143\ngo.temporal.io/server/service/history.(*taskProcessor).handleTaskError\n\t/temporal/service/history/taskProcessor.go:332\ngo.temporal.io/server/service/history.(*taskProcessor).processTaskAndAck.func1\n\t/temporal/service/history/taskProcessor.go:218\ngo.temporal.io/server/common/backoff.Retry\n\t/temporal/common/backoff/retry.go:103\ngo.temporal.io/server/service/history.(*taskProcessor).processTaskAndAck\n\t/temporal/service/history/taskProcessor.go:244\ngo.temporal.io/server/service/history.(*taskProcessor).taskWorker\n\t/temporal/service/history/taskProcessor.go:167"}

目的是了解我应该调整什么(选项/配置)以从Temporal获得更多性能。

我将不胜感激关于在哪里看问题的任何提示。

共有1个答案

黄英韶
2023-03-14

这里有一个关于如何考虑工作者调优的指南。如果它没有涵盖您的案例,请提交一期!

https://docs.temporal.io/application-development/worker-performance/

 类似资料:
  • 在当前的应用中,我们有三个服务: 发票 银行转账:调用外部API,这可能需要一分钟左右的时间,具体取决于队列 分类帐:创建借贷分类帐的内部微服务 为了沟通,我们有一个编配传奇。流程基本上使用发票作为协调器: 发票服务向Rabbitmq发布消息,要求支付发票X 银行转账服务监听消息,获取发票X 银行转账服务处理转账(调用银行的API)。付款成功时,向Rabbitmq发布“InVoice X已付款”的

  • 可以运行不需要连接到cadence服务器的本地活动。是否有适当的方式在本地运行工作流,以防发生cadence中断?我正在使用Go客户端。

  • 我有两个名为 w1 和 w2 的工人 W1主持活动A1。 如果w1出现故障,它是否会在w2上自动创建以处理服务器故障转移? 我试了一下,但是显示ActivityTimeOut错误,工作流失败。 难道我们没有其他选择来处理这样的故障转移吗? 在这种情况下,活动不会超时。由于工作机崩溃,它没有在预期时间内响应cadence服务。这是将它称为ActivityTimeOut的正确方法吗?相反,难道我们不能

  • 我在我的Ubuntu VM上有hadoop 2.5.2单模式安装,它是:4核,每个核3GHz;4G内存。这个VM不是用于生产的,只用于演示和学习。 然后,我使用python编写了一个vey简单的map-reduce应用程序,并使用该应用程序处理49个XML。所有这些xml文件都很小,每个文件都有数百行。所以,我期待一个快速的过程。但是,big22令我惊讶的是,它花了20多分钟才完成这项工作(该工作

  • 我是Cadence/Temporal的新手,想知道设计审查过程是什么样的。我的团队已经准备好进行正式的设计审查,但想知道是否有模板可以捕获Cadence/Temporal的特定信息?

  • temporal.io如何与cadenceworkflow.io?如果根据节奏工作流服务启动一个新项目,应该使用什么?