并发介绍
涉及到并发控制的一共有4个参数: concurrent , limit ,request_concurrency,parallel
全局的配置:
[root@iZ2vc6igbukkxw6rbl64ljZ config]# vi config.toml
concurrent = 4 #这是一个总的全局控制,它限制了所有pipline,所有runner执行器同时可以并发执行job的总数,这里是4就是整体并发是4,其他的job只能等。
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "jtkj-docker"
执行器Runner配置
[[runners]]
limit = 2 #限制了这个runner最大可以同时并行执行2个job
request_concurrency = 4 #这个参数控制一个runner执行器可以一次从gitlab的任务队列中获取多少个任务数,这个对于共享执行器来说比较有用,比如gitlab任务队列中有10个任务,现在有3个执行器runner都符合这些任务执行的,那么为了提高效率,设置每个同时获取3 或 4个就比较好,这样可以保证每个执行器runner都可以获取到合适数量的任务,保障了并行执行的效率;如果一个执行器配置了10,那么它一次就拿完了所有的任务,但是它要一次执行不行了那么多任务,其他执行器要不能获取到任务,就只能空闲了。
上面3个参数修改了要重启gitlab-runnner
parallel配置
codescan:
stage: codescan
tags:
- build
only:
- master
script:
- echo "codescan"
- sleep 5;
parallel: 3 #配置在stage中, 这个参数就是表示: 这个job在执行时要同时启动3个
在Gitlab流水线上看到的效果就是:
但是这个并发的job数也是受控上面的全局参数concurrent 和runner的limit并发数控制的,不能超过它 ,我在测试列中设置了concurrent =4 parallel=6 那么当这个pipline启动时,也就并行4job,不是 6