前几天,我们的节奏设置遇到了一些问题。我们的一个机器实例开始将CPU使用率提高到90%,所有入站工作流执行都停留在“计划”状态。检查日志后,我们注意到匹配的服务抛出了以下错误:
{
"level": "error",
"ts": "2021-03-20T14:41:55.130Z",
"msg": "Operation failed with internal error.",
"service": "cadence-matching",
"error": "InternalServiceError{Message: UpdateTaskList operation failed. Error: gocql: no hosts available in the pool}",
"metric-scope": 34,
"logging-call-at": "persistenceMetricClients.go:872",
"stacktrace": "github.com/uber/cadence/common/log/loggerimpl.(*loggerImpl).Error\n\t/cadence/common/log/loggerimpl/logger.go:134\ngithub.com/uber/cadence/common/persistence.(*taskPersistenceClient).updateErrorMetric\n\t/cadence/common/persistence/persistenceMetricClients.go:872\ngithub.com/uber/cadence/common/persistence.(*taskPersistenceClient).UpdateTaskList\n\t/cadence/common/persistence/persistenceMetricClients.go:855\ngithub.com/uber/cadence/service/matching.(*taskListDB).UpdateState\n\t/cadence/service/matching/db.go:103\ngithub.com/uber/cadence/service/matching.(*taskReader).persistAckLevel\n\t/cadence/service/matching/taskReader.go:277\ngithub.com/uber/cadence/service/matching.(*taskReader).getTasksPump\n\t/cadence/service/matching/taskReader.go:156"
}
重启工作流后,一切都恢复正常,但我们仍在努力弄清楚发生了什么。在这个事件发生的那一刻,我们并没有带来任何繁重的工作负载,它只是突然发生的。我们的主要怀疑是,可能匹配服务在这个事件中失去了与cassandra数据库的连接,就在我们重启它后,它能够恢复连接。但这只是目前的一个假设。
这个问题的原因可能是什么?有没有办法防止这种情况在未来发生?也许是一些我们遗漏的动态配置?
PS:踏频版本为0.18.3
这是gocql中的一个已知问题,可能由多种原因引起:
匹配.持久性全球最大 QPS
将充当全局速率限制符来覆盖匹配。
此外,如果匹配的节点运行热,则可能已达到单个任务列表的限制。如果是这样,请考虑启用可缩放的任务列表功能。
我想实现一个用例,在适当的缩减期间,我想确保cadence员工不接受任何新工作。我在k8上使用cadence,所以我计划给已知的最大超时设置一个terminationGracePeriodSeconds,在这个时间之前,我知道所有正在进行的任务都将在特定的pod上完成。因此,新任务将仅分配给在职员工。 我的用例是,我的活动具有较大的 startToClose 超时,并且在部署期间,活动任务将被选取
每次我尝试打开玩家设置,它将只显示空白。下面的错误将显示在控制台中。 我尝试过以下链接:https://answers.unity.com/questions/1320634/unable-to-list-target-platforms-when-i-try-to-build.html,但仍然没有工作。 CommandInvokationFailure:无法更新Android SDK包列表。/a
我在更新Android Studio 3.1 Canary 6版本后出现错误 我的分级档案是: 有什么解决办法吗?
我正在尝试独立运行每个节奏服务,这样我就可以轻松地扩展它们。我的团队正在使用docker群,我们使用Portainer UI管理一切。到目前为止,我已经能够扩展前端服务以拥有两个副本,但是如果我对匹配的服务做同样的事情,我将通过工作流执行获得大量的。最终,执行将成功完成,但需要很长时间。要想有一个想法,使用两个匹配的服务副本需要2分钟,而只使用一个只需要7秒。 这是一个测试环境。我正在使用泊坞化的
问题内容: 有没有正确的方法来更新IRedisList?使用下面的示例代码,我可以对其进行修改以删除列表,更新披萨并重新添加列表,但这感觉不对。命令行文档非常繁琐,但是比我要大得多,而且我不确定要从哪里开始寻找。 问题答案: 避免列表: 不幸的是,在这种情况下,Redis列表 并不是真正的好选择 。当我开始使用Redis时,我遇到了同样的问题, 它们似乎是显而易见的选择;)。 如果您将Redis列
问题内容: 我正在使用该软件包在Go中编写Windows服务。 到目前为止,一切都很顺利,而且很容易上手,我喜欢它。 我已经编写了一些自动更新功能,并且希望该服务在完成更新后重新启动。 我尝试生成一个进程,该进程将使用来重新启动服务,但它会记录一条错误消息,该消息似乎与尝试在作为本地系统运行时尝试控制该服务有关。 更好的方法是,将服务设置为,效果很好! 唯一的麻烦是,似乎没有使用Go编程配置这些选