【发布时间】:2021-05-28 15:11:03
【问题描述】:
我目前正在测试我的应用程序的扩展性,但遇到了一些我没有预料到的事情。
应用程序在 5 节点集群上运行,它具有多个服务/参与者类型,并且使用共享进程模型。 对于某些组件,它使用 actor 事件作为尽力而为的 pubsub 系统(存在回退,因此如果删除通知,则没有问题)。 当参与者的数量增加(也称为订阅主题)时,就会出现问题。 actorservice 目前被划分为 100 个分区。 此时的主题数量约为 160.000,其中每个主题被订阅 1-5 次(需要它的节点),平均订阅 2.5 次(大约 40 万订阅)。
此时集群中的通信开始中断,未创建新订阅,取消订阅超时。 但它也会影响其他服务,对诊断服务的内部调用超时(询问 5 个副本中的每一个),这可能是由于分区/副本端点的解析,因为对网页的外部调用很好(这些端点使用相同的技术/代码栈)。
事件查看器充满警告和错误,例如:
EventName: ReplicatorFaulted Category: Health EventInstanceId {c4b35124-4997-4de2-9e58-2359665f2fe7} PartitionId {a8b49c25-8a5f-442e-8284-9ebccc7be746} ReplicaId 132580461505725813 FaultType: Transient, Reason: Cancelling update epoch on secondary while waiting for dispatch queues to drain will result in an invalid state, ErrorCode: -2147017731
10.3.0.9:20034-10.3.0.13:62297 send failed at state Connected: 0x80072745
Error While Receiving Connect Reply : CannotConnect , Message : 4ba737e2-4733-4af9-82ab-73f2afd2793b:382722511 from Service 15a5fb45-3ed0-4aba-a54f-212587823cde-132580461224314284-8c2b070b-dbb7-4b78-9698-96e4f7fdcbfc
我已尝试扩展应用程序,但没有激活此订阅模型,我很容易达到两倍大的工作负载而没有任何问题。
所以有几个问题
- actor 事件是否存在已知限制/建议限制?
- 增加分区数或/和节点数会有所帮助吗?
- 通信干扰是否合乎逻辑?为什么其他服务端点也有问题?
【问题讨论】:
-
正如本周早些时候 44:17 在youtube.com/watch?v=oX9cX69mk5o 上所传达的那样,演员活动没有硬性限制,但我推断您可能有运气提交支持票以挖掘实际资源使用集群来确定问题的根源。
-
谢谢,我最终向马特提供了更多信息,之后他让我开一张支持票。当我知道更多时,我会更新/回答这个问题
-
@P.Gramberg 你有没有找到更多关于这个的信息?
-
@Oliver 我的工单仍在由微软处理,我们发现线程数对于空闲系统(200-300 个线程)来说是疯狂的。他们有一个复制案例,所以工程师现在正在研究它。由于整个大流行情况,一切都需要更长的时间。当我知道更多时,我会回来报告
标签: azure-service-fabric service-fabric-actor