gitlab runner并发是如何工作的? 问题1:两者之间有什么区别

gitlab runner并发是如何工作的? 问题1:两者之间有什么区别,gitlab,gitlab-ci,gitlab-ci-runner,Gitlab,Gitlab Ci,Gitlab Ci Runner,及 问题2:这样做有意义吗。。。 在一个全局concurrent=3的运行程序上有3个相同类型的执行器(worker)?或者全局concurrent=3的单个执行器能否安全地并行执行多个作业 问题3:它们之间的关系。。。 运行程序。使用运行程序限制。请求并发和并发 谢谢 (…)通过GitLab CI的协调器API拾取作业的隔离(虚拟)计算机 因此,每个运行程序都是一个独立的流程,负责拾取作业执行请求并根据预定义的配置进行处理。作为一个独立的进程,每个运行程序都能够创建“子进程”(也称为机器),以

问题2:这样做有意义吗。。。 在一个全局
concurrent=3的运行程序上有3个相同类型的执行器(
worker
?或者全局
concurrent=3
的单个执行器能否安全地并行执行多个作业

问题3:它们之间的关系。。。
运行程序。使用
运行程序限制
。请求并发
并发

谢谢

(…)通过GitLab CI的协调器API拾取作业的隔离(虚拟)计算机

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

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

  • limit
    :“限制可以同时处理的作业数量”。换句话说,为了同时执行作业,一个运行者可以创建多少“子进程”
  • request\u concurrency
    :“限制来自GitLab的新作业的并发请求数”。换句话说,一个运行者可以同时从GitLab CI作业队列接收多少个作业执行请求
  • 还有一些。在你的问题中,你提到了其中一个:

  • concurrent
    :“限制全局可并发运行的作业数。这是使用所有已定义运行程序的作业数的最大上限。”。换句话说,它限制了可以同时运行作业的“子进程”的最大数量
  • 因此,请记住转轮及其子进程之间的差异,以及特定转轮设置和全局机器设置之间的差异:

    问题1: 不同之处在于,在您的1st示例中,您有一名跑步者,而在您的2nd示例中,您有三名跑步者。值得一提的是,在这两个示例中,您的机器只允许同时运行3个作业

    问题2: 一个运行程序不仅可以同时安全地运行多个作业,还可以控制希望它处理的作业数量(使用前面提到的
    limit
    设置)

    同样,在同一台机器上运行类似的跑步者也没有问题。如何定义跑步者的配置取决于您和您的基础架构功能

    另外,请注意,它只定义了如何运行作业。它不是唯一定义跑步者的东西,也不是“工作者”的同义词。运行的是您的跑步者及其子流程

    问题3: 总而言之:您可以在同一台机器上定义一个或多个工人。每一个都是一个孤立的过程。运行程序的
    限制
    是可以创建运行程序进程的多少个子进程以同时运行作业。一个运行者的
    请求\u并发性
    是一个运行者可以处理来自Gitlab CI作业队列的多少个请求。最后,将值设置为
    concurrent
    将限制在计算机中运行的一个或多个运行程序中可以同时在计算机上执行的作业数

    工具书类 为了更好地理解,我真的建议你阅读


    最后,我想你可能会发现这个关于如何使用的问题很有用。

    谢谢你的回答。为了验证我是否理解正确:如果我有concurrent=1和3个worker,那么其中只有1个可以接受作业,而其他2个将处于空闲状态。另一方面,当我有concurrent=3,3个worker,每个worker的limit=1时,单个机器可以并行运行3个作业,但每个worker只能执行1个作业。对的
    concurrent = 3
    
    [[runners]]
      ..
      executor = "shell"
    
    concurrent = 3
    
    [[runners]]
      ...
      executor = "shell"
    
    [[runners]]
      ...
      executor = "shell"
    
    [[runners]]
      ...
      executor = "shell"