Kubernetes上的Akka应用程序正面临心跳延迟,即使在没有负载的情况下也是如此。
还不断有以下警告:
heartbeat interval is growing too large for address ...
我尝试为集群添加一个自定义调度程序,甚至为每个特定的参与者添加,但没有帮助。我没有执行任何阻塞操作,因为它只是一个简单的Http服务器。
当群集有负载时,节点将变为“无法访问”。
我创建了一个存储库,可用于重现该问题:https://github.com/CostasChaitas/Akka-Demo
2条答案
按热度按时间qmb5sa221#
首先,感谢有据可查的复制器。我确实发现了一个小故障与依赖关系,你包括,但它很容易解决。
也就是说,我无法重现您的错误。在我的本地机器和开发集群上,一切都运行良好。您没有包括负载生成器,所以可能我没有生成持续的负载,但我没有得到心跳延迟。
我怀疑这是Akka Cluster heartbeat delays on Kubernetes的重复。如果是这样,听起来你已经检查了我通常怀疑的GC和CFS。如果你能够在本地重现,它也使它不太可能是我的另一个常见问题,即配置不当的K8网络。(我有一个客户端在K8上的Akka集群有问题,结果发现它只是一个配置不当的集群:网络正在丢弃和延迟Pod之间的数据包。)
既然你说这是负载测试,也许你只是用完了套接字/文件?你没有太多的HTTP服务器配置。(也没有任何JVM选项。)
我想我的下一个调试步骤将是连接到其中一个正在运行的容器,并尝试测试网络中的pod之间的网络。
kokeuurv2#
我也有同样的问题,不断增长的心跳间隔,但在我的情况下,这是一旦我开始使用集群,虽然负载不高,我只尝试了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