排查托管 DevOps 池问题

本文提供了常见托管 DevOps 池问题的解决方案。

池创建错误

错误代码 说明
PoolProvisioningFailed 由于 Azure DevOps 组织权限而导致池创建失败
UnauthorizedAccessToVirtualNetwork 由于 VNet 权限导致池创建失败

由于 Azure DevOps 组织权限而导致池创建失败

池创建失败,并出现类似于以下错误消息的错误。

未在 Azure DevOps 组织中找到已登录用户

  • Validation failure "PoolProvisioningFailed": "Failed to provision agent pool. Exception: The logged in user, <your user>, was not found in the Azure DevOps organization provided, <your Azure DevOps organization>."

若要解决问题,请执行以下操作:

登录的用户在 Azure DevOps 组织中没有“管理”权限

  • Validation failure "PoolProvisioningFailed": "Failed to provision agent pool. Exception: The logged in user, <your user>, does not have Manage permissions in the Azure DevOps organization provided, <your Azure DevOps organization>."

若要解决问题,请执行以下操作:

由于 VNet 权限导致池创建失败

池创建失败,出现UnauthorizedAccessToVirtualNetwork类似于以下错误的错误: Validation failure "UnauthorizedAccessToVirtualNetwork": "DevOpsInfrastructure service principal does not have Read access to virtual network <your VNet> in resource group <your resource group>. Give Reader and Network Contributor access to DevOpsInfrastructure service principal and try again.

若要解决此问题,请执行下列操作:

管道启动延迟

使用托管 DevOps 池时,可能会遇到这样一种情况:在管道被触发后,到其开始运行之间会有很长的延迟。 故障排除指南的此部分介绍可能影响池性能的常见项。 有关详细信息,请参阅 管理成本和性能

检查并行作业不足

托管 DevOps 池代理被视为 Azure DevOps 的自承载代理,需要自承载并行作业才能运行。 例如,如果组织的自托管并行数为 10,则组织只能同时运行 10 个自托管管道作业。 如果排队的管道超过 10 个,则一次只能运行 10 个。

检查自托管环境中的并行作业数量,以确保有足够的能力满足您的工作负荷对并发管道的需求。 有关详细信息,请参阅配置并行作业并为其付费

检查最大代理配置

"最大代理"设置用于配置托管 DevOps 池中正在运行的代理的最高数量。 如果 “最大代理 ”设置为 5,则托管 DevOps 池最多可以运行五个并发管道。 如果排队了 5 个以上的管道,则在可用五个可用代理之一之前,其他管道不会启动。

注释

最大代理 配置可以同时预配的最大代理数,但组织自托管并行作业数量指定可以同时运行的作业数。 确保组织中有足够的并行的自托管作业,以便代理能够运行作业。 有关详细信息,请参阅 Azure DevOps Services 并行作业定价

考虑使用备用代理时间表预先配置代理

如果备用代理模式被禁用,则在管道排队时会按需启动 Managed DevOps 池中的代理,虽然通常一个新代理只需几分钟即可启动,但有时最长可能需要 15 分钟。

启用 备用代理模式 后,可以指定计划和代理计数,以便随时满足工作负荷的需求。

有关详细信息,请参阅 管理成本和性能 - 使用备用代理进行预预配

新泳池的自动待机模式

DevOps 池管理使用历史池使用情况数据来帮助进行自动待机模式的扩展预测。 新池没有任何历史数据,因此可能会按需创建代理。 为了提高性能,可以在第一个月切换到手动待机模式,并在托管 DevOps 池有时间观察池使用情况后切换到自动待机模式。

如果对多个映像使用备用代理,请检查备用代理百分比

如果对多个映像使用备用代理,请检查每个映像的使用情况历史记录,并将其与映像的 备用代理百分比 设置进行比较,以确保备用比率与使用情况匹配。 例如,如果你有一个 Windows 映像和一个 Ubuntu 映像,并且工作负荷使用 Windows 75% 时间,请确保 Windows 映像配置为备用代理百分比为 75。

考虑使用有宽限期的有状态池,以保持代理联机状态。

在不使用备用代理的情况下提高代理性能的一种选择是使用短宽限期的有状态代理。 当具有宽限期的有状态代理完成作业时,它会在宽限期指定的持续时间内保持联机状态,并等待其他作业。 如果工作负荷突发,则可以配置一个宽限期,该宽限期可在作业稳定时使代理保持联机状态,并在较慢的时间段从头开始启动它们。

有关详细信息,请参阅 备用代理有状态池

查看超时错误代码

如果代理分配超时,可以在“概述”页的“错误代码”部分检查错误代码。

管道无法成功完成

检查是否存在映像更新

如果映像更新后管道开始失败,则可以暂时将管道配置为使用以前的映像版本。 可以将失败的管道配置为单独使用以前的映像版本,或者可以为托管 DevOps 池中所有使用该映像的管道配置以前的映像版本。

若要查看管道是否由于映像版本更改而失败,请将失败的管道运行的映像版本与上次成功的管道运行中的映像版本进行比较。

  1. 转到管道 并查看 管道运行历史

    管道运行的屏幕截图。

  2. 查看要比较的两个管道运行的运行详细信息,然后选择管道作业以查看该作业的诊断信息。 如果管道有多个作业,请选择在托管的 DevOps 池中运行的作业。

    管道运行详细信息的屏幕截图。

  3. 选择 “初始化作业”,然后从 “当前映像版本 ”部分检索映像版本。

    管道运行映像版本的屏幕截图。

如果最近失败的管道运行和上一次成功运行之间的映像版本不同,则失败可能是由映像更新引起的。 您有两个选择可以在排查根本原因时暂时还原到以前的映像版本。

托管的 DevOps 池会保留过去的 20 个映像用于所选市场映像,以及过去的 10 个映像用于 Azure Pipelines 映像。 过去版本的 Azure 计算库映像由这些 Azure 计算库的所有者维护。

另请参阅