gpt4 book ai didi

gitlab - gitlab runner 并发如何工作?

转载 作者:行者123 更新时间:2023-12-03 00:28:29 35 4
gpt4 key购买 nike

Q1:有什么区别

concurrent = 3

[[runners]]
..
executor = "shell"

concurrent = 3

[[runners]]
...
executor = "shell"

[[runners]]
...
executor = "shell"

[[runners]]
...
executor = "shell"

问题2:这是否有意义......

在全局并发= 3的单个运行器上有3个相同类型的执行器(workers)?或者具有全局 concurrent = 3 的单个执行器可以安全地并行执行多个作业吗?

问题 3:它们之间有何关系...

runners.limitrunners.request_concurrencyconcurrent

谢谢

最佳答案

Gitlab's documentation on runners describes them as:

(...) isolated (virtual) machines that pick up jobs through the coordinator API of GitLab CI

因此,每个运行程序都是一个独立的进程,负责拾取作业执行请求并根据预定义的配置处理它们。作为一个独立的进程,每个运行器都能够创建“子进程”(也称为机器)来运行作业。

当您在 config.toml 中定义 [[runner]] section 时,您正在配置一个运行器并设置它如何处理作业执行请求。在您的问题中,您提到了其中两个“如何处理作业执行请求”设置:

  1. limit:“限制可以同时处理的作业数量”。换句话说,运行程序可以创建多少个“子进程”以便同时执行作业;
  2. request_concurrency:“限制来自 GitLab 的新作业的并发请求数量”。换句话说,运行程序可以同时从 GitLab CI 作业队列中获取多少个作业执行请求。

此外,还有一些settings that apply to a machine globally 。在您的问题中您提到了其中之一:

  1. 并发:“限制全局可以同时运行的作业数量。这是使用所有定义的运行器的作业数量的最大上限”。换句话说,它限制了可以同时运行作业的“子进程”的最大数量。

因此,请记住运行程序及其子流程之间的差异以及特定运行程序设置和全局机器设置之间的差异:

第一个问题:

不同之处在于,在您的第一个示例中,您有一个运行者,而在您的第二个示例中,您有三个运行者强>。值得一提的是,在这两个示例中,您的机器仅允许同时运行 3 个作业。

第二季度:

单个运行器不仅可以安全地同时运行多个作业,而且还可以控制您希望它处理的作业数量(使用前面提到的限制设置)。

此外,在同一台机器上运行类似的运行者也没有问题。如何定义运行器的配置取决于您和您的基础设施能力。

另外,请注意 an executor仅定义如何运行您的工作。它不是定义运行者的唯一事物,也不是“ worker ”的同义词。起作用的是您的运行者及其子流程。

第三季度:

总结一下:您可以在同一台机器上定义一个或多个工作人员。每个过程都是一个孤立的过程。运行程序的限制是运行程序进程可以创建多少个子进程来同时运行作业。运行程序的 request_concurrency 是运行程序可以处理来自 Gitlab CI 作业队列的请求数量。最后,将值设置为“并发”将限制机器中运行的一个或多个运行程序可以同时在机器上执行的作业数量。

引用文献

为了更好地理解,我强烈建议您阅读 Autoscaling algorithm and parameters

最后,我想您可能会发现这个关于如何 run runners in parallel on the same server 的问题有用。

关于gitlab - gitlab runner 并发如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54534387/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com