我们已决定更新我们的基础架构,以将Jenkins与Kubernetes插件一起使用。我们通过以下方式配置了4节点混合集群:
在数据中心中,延迟非常低(<1毫秒):A-B或C-D。
在整个互联网上,等待时间非常长(75毫秒):A-C,A-D,B-C,B-D。
我们注意到,当Jenkins主服务器和Jenkins代理之间存在高延迟时,从作业工作完成到作业显示“成功”,作业似乎要等待45秒。此延迟仅发生在第一份工作上。当等待时间很短时,此延迟小于2秒。时间完全可重复,可用带宽充足(> 50 Mb / s)。
令人惊讶的是,额外的时间仅在工作完成后才发生,而不管工作需要多少时间。除此之外,数据包捕获显示在第一次执行作业期间从主服务器到代理的25 MB数据。
我们能够通过在本地运行主服务器和代理并通过tc注入延迟来复制此行为。
有人遇到过类似的问题,并且采用了哪种解决方案?
似乎Jenkins在最后发送了一些数据,并且RPC框架正在执行受延迟限制的顺序调用。但是数据是什么,有什么办法可以避免呢?我们已经剥离了所有非Kubernetes插件,以测试可能是构建后插件代码的理论,但这没有效果。