如何解决如何在 Cadence 中增加 Persistence QPS 限制 确保相应地扩展数据库
Cadence 中 QPS 限制有两种类型的错误
Persistence Max QPS Reached
和
Persistence Max QPS Reached for List Operations
最好的解决方法是什么?
解决方法
它们是什么
它们用于保护数据库不被 Cadence 服务过载。
在达到 default database 上所有数据库操作的限制时达到了持久性最大 QPS。
默认数据库几乎是数据库操作的一切,包括插入/更新/删除工作流/活动。
列表操作达到的持久性最大 QPS 达到可见性数据库上仅 db 操作的限制时。如果使用高级可见性,可见性数据库可以是 SQL/Cassandra 或 ElasticSearch。
可见性数据库仅用于提供可见性功能。
对默认数据库的限制
有不同的配置控制限制:
frontend.persistenceMaxQPS 和 frontend.persistenceGlobalMaxQPS 共同控制前端服务的常规数据库操作限制。默认为每个节点 2000。
matching.persistenceMaxQPS 和 matching.persistenceGlobalMaxQPS 共同控制匹配服务的常规数据库操作限制。默认为每个节点 3000。
history.persistenceMaxQPS 和 history.persistenceGlobalMaxQPS 共同控制历史服务的常规数据库操作限制。默认为每个节点 9000。
XXX.persistenceMaxQPS 是单个节点的局部限制,而 XXX.persistenceGlobalMaxQPS 是所有节点的全局限制。当persistenceGlobalMaxQPS 设置为大于零时,它是首选。
默认XXX.persistenceGlobalMaxQPS 为零,因此使用persistenceMaxQPS 作为节点中的本地限制。检查 documentation 中的默认值。
可见性数据库的限制
只有前端和历史服务需要查询可见性数据库:
frontend.visibilityListMaxQPS 是基于 cassandra/SQL 数据库的前端服务可见性的本地节点限制。默认为 10。(在旧版本中为 1)
frontend.esVisibilityListMaxQPS 是基于 ElasticSearch 的高级可见性的本地节点限制。默认为 30。
history.historyVisibilityOpenMaxQPS 是当后台任务写入开放执行时,基于 cassandra/SQL 数据库的历史服务可见性的本地节点限制。后台任务应该能够进行退避重试,因此您无需担心错误。
history.historyVisibilityClosedMaxQPS 与上述类似,但写入封闭表。
如何解决错误
确定哪个服务和哪个数据库操作类型
首先,确定哪个服务有错误。 例如:
"level":"error","ts":"2020-04-15T05:24:22.075Z","msg":"Error refreshing domain cache","service":"cadence-frontend","error":"ServiceBusyError{Message: Persistence Max QPS Reached.}","logging-call-...
...
这是在默认数据库操作上遇到 QPS 限制的前端服务。
但是如果你看到:
"service":"cadence-frontend","error":"ServiceBusyError{Message: Persistence Max QPS Reached for List Operations.}"
然后是前端服务对可见性数据库操作(基于 sql/Cassandra 或 ElasticSearch)的 QPS 限制。
如果需要提高限制
因为默认限制是本地节点限制,提高限制的最简单方法就是向出现错误的服务添加更多节点。对于我们上面提到的两个示例,您只需将节点添加到前端服务即可提高限制。
但理想情况下,您应该能够更改配置。这是通过动态配置部分。
这是dynamic configuration format。
如果您使用的是舵图,the dynamic config is defined here。 例如,
frontend.persistenceGlobalMaxQPS:
- value: 1000
将为默认数据库操作的所有前端服务设置全局限制。
frontend.visibilityListMaxQPS:
- value: 100
frontend.esVisibilityListMaxQPS:
- value: 100
将为可见性数据库操作(SQL/Cassandra 或 ElasticSearch)设置所有前端服务的全局限制。
确保相应地扩展数据库。
提高限制后,请注意增加的数据库负载以了解延迟和 CPU/内存。并根据需要扩展您的数据库。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。