Azure DevOps Server 2020新管道排队时自动取消运行中管道问题
问题根因及对应配置位置
该异常抢占调度行为不受代理池基础配置控制,你之前在项目、集合级代理池列表页找不到对应配置是正常的,核心控制项有两处,按以下顺序排查即可:
第一处:集合级并行作业配额配置(90%以上同类问题的根因)
配置入口不在web端,在Azure DevOps Server部署服务器本地的Azure DevOps Server管理控制台:- 登录部署了Azure DevOps Server应用层的服务器,打开管理控制台
- 左侧菜单选择「应用层」,找到对应项目集合进入集合配置页
- 选择「管道并行作业」配置项,检查私有项目的并行作业配额数值
- 如果该配额值被设置为远小于default代理池的可用代理总数(比如多代理环境下设为1),调度器会判定无可用排队配额,直接终止最早启动的运行中作业给新请求腾资源,不会生成等待队列。将配额值调整为大于等于代理池可用代理总数量,即可恢复正常的排队等待逻辑。
第二处:管道级抢占开关+代理池调度策略配置
先检查代理池抢占策略:- 进入web端集合设置 > 代理池,选中default池进入详情页
- 切换到左侧的「设置」选项卡(不是代理列表页),拉到最底部的调度策略板块
- 如果勾选了允许高优先级作业抢占正在运行的低优先级作业,同时所有经典管道的默认优先级均为最高级,调度器会直接终止运行时间最长的作业给新请求分配资源,取消该勾选即可恢复公平排队逻辑。
再批量检查经典管道配置: - 逐个打开经典管道的编辑页,切换到顶部「选项」选项卡
- 找到构建分类下的
新构建排队时取消正在运行的构建选项,如果被批量误开启,即使是不同项目、不同代码库的管道,只要共用同一并行作业配额池,也会触发抢占逻辑,取消所有管道的该选项勾选即可。
排查提示:不需要修改服务端注册表、数据库配置,上述两个配置项调整完成后,重启代理池服务即可生效。
内容的提问来源于stack exchange,提问作者RickWeb
相关产品推荐
相关产品推荐

