【问题标题】:Akka heartbeat delaysAkka 心跳延迟
【发布时间】:2022-01-28 18:32:35
【问题描述】:

Kubernetes 上的 Akka 应用程序面临心跳延迟,即使在没有负载的情况下也是如此。

还有不断的以下警告:

heartbeat interval is growing too large for address ...

我尝试为集群添加一个自定义调度程序,甚至为每个特定的参与者添加一个,但没有帮助。我没有做任何阻塞操作,因为它只是一个简单的 Http 服务器。

当集群有负载时,节点变得无法访问。

我创建了一个可用于重现问题的存储库:https://github.com/CostasChaitas/Akka-Demo

【问题讨论】:

标签: java kubernetes akka akka-http akka-cluster


【解决方案1】:

首先,感谢记录良好的复制者。我确实发现了一个与您包含的依赖项有关的小故障,但很容易解决。

也就是说,我无法重现您的错误。在我的本地机器和我的开发集群上一切正常。你没有包括你的负载生成器,所以也许我只是没有产生持续的负载,但我根本没有心跳延迟。

我怀疑这是 Akka Cluster heartbeat delays on Kubernetes 的副本。如果是这样,听起来您已经检查了我通常怀疑的 GC 和 CFS。而且,如果您能够在本地重现,那么它也不太可能是我的另一个常见问题,即配置错误的 K8 网络。 (我有一个客户端在使用 K8 上的 Akka 集群时遇到问题,结果证明它只是一个配置错误的集群:网络正在丢弃和延迟 pod 之间的数据包。)

既然你说这是负载测试,也许你只是用完了套接字/文件?您没有太多的 HTTP 服务器配置方式。 (也没有任何 JVM 选项。)

我认为我的下一个调试步骤是连接到其中一个正在运行的包含并尝试测试网络中 Pod 之间的网络。

【讨论】:

    【解决方案2】:

    我也遇到了心跳间隔增加的同样问题,但在我的情况下,虽然负载不高,但我开始使用集群时,我只尝试了 2tps。

    浏览 Akka 文档后,我发现 Akka 不鼓励使用 resources.limits.cpu。我从我的部署清单文件中删除了它,它运行良好,没有延迟。

    您可以参考这里的文档:https://doc.akka.io/docs/akka/current/additional/deploying.html?_ga=2.222760347.1686781468.1643119007-1504733962.1642433119#resource-limits

    【讨论】:

      猜你喜欢
      • 2020-01-20
      • 2023-04-04
      • 1970-01-01
      • 2013-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多