配置缩放

配置缩放设置以管理托管 DevOps 池的性能和成本。 有关定价和性能的信息,请参阅 管理成本和性能

代理状态

可以将托管 DevOps 池配置为无状态池或有状态池。

托管 DevOps 池的默认设置是无状态(每次刷新代理),但在某些情况下,团队可能需要重复使用代理,以便重复使用在上一管道运行期间创建的包或文件。 生成工作负荷是团队想要保留状态并重复使用代理的常见方案。 可以通过托管 DevOps 池实现有状态池,同时将其与安全最佳做法进行平衡。 默认情况下,代理最多可以重复使用 7 天,但你可以将其配置为更快地回收。

注意

安全专家建议每次使用无状态池或使用代理状态设置 Fresh 代理,以防范供应链攻击。

无状态池

配置无状态代理后,会为每个作业采购一个新代理,并在作业完成后放弃。

无状态代理的屏幕截图。

每次将代理状态设置为 Fresh 代理时,都会为每个作业采购一个新代理,并在作业完成后丢弃。

有状态池

有状态代理的屏幕截图。

当多个生成"kind": "stateful"在资源模板或 { "stateful": {...} } Azure CLI 中)可以使用 Same 代理时,池中的代理被视为有状态。 有状态池使用以下设置进行配置。

  • 备用代理 的最大生存时间(maxAgentLifetime) 配置有状态池中代理在关闭和丢弃之前可以运行的最大持续时间。 备用代理最长生存时间的格式dd.hh:mm:ss。 备用代理最长生存时间的默认值设置为允许的最大持续时间为 7 天(7.00:00:00)。

  • 宽限期gracePeriodTimeSpan) 配置有状态池中的代理等待新作业的时间,然后再关闭所有当前作业和排队作业后完成。 宽限期的格式dd.hh:mm:ss,默认值为无宽限期。

当无状态池中的代理在每个作业后关闭并丢弃时,如果满足以下任一条件,有状态池中的代理将继续运行。

  • 如果第一个作业完成时有另一个作业排队,托管 DevOps 池会将该作业发送到运行第一个作业的代理,而不是将其关闭。
  • 如果为池配置宽限期,代理将等待新作业,等待宽限期指定的持续时间,然后再关闭。
  • 如果 启用了备用代理,并且代理映像满足活动预配期的条件,代理将继续运行并等待作业。

如果有状态池中正在运行的代理在备用代理所指定的 持续时间内连续运行,则会关闭并丢弃这些代理,即使以前的条件为 true。 例如,如果为备用代理配置了最长生存时间三天,而备用代理模式设置为“手动”、“全周方案”(计算机可用 24/7),则代理在连续三天的运行时间后重启。

重要

如果没有宽限期、备用代理的活动预配期,并且没有与代理匹配的排队作业,则状态池中的代理仍然可以关闭和丢弃。 放弃代理后,任何状态都将丢失。

宽限期可实现运行具有一致负载的管道的有状态池的最经济高效方法,并且不需要使用备用代理模式使代理保持联机状态并准备好接受作业。

备用代理模式

创建池时, 备用代理模式 默认处于关闭状态,并且没有备用代理可以立即分配给管道,可能需要等待几分钟(最多 15 分钟),以便按需预配代理。 为了获得更好的性能,请启用 备用代理模式 并配置为工作负荷提供容量的备用代理计划。

  • 关闭 - 备用代理模式处于关闭状态,并在作业排队时按需预配代理。
  • 手动 - 配置手动备用计划。
  • 自动 - 根据代理使用历史记录使用自动备用计划,并根据成本和性能进行配置。

备用代理模式选择的屏幕截图。

手动

手动模式最适合了解其 CI/CD 管道使用模式的团队。 如果选择手动选项,则需要根据你了解池中的代理最有可能使用以及可能使用的代理数,以及指定满足预计需求的代理的预配计数来定义预预配方案。

可以创建自己的预配计划,也可以从其中一个预定义的计划中进行选择,并且可以配置时区以用于指定计划。 预预配时区的默认值为 (UTC) 协调世界时

提示

方案中的预配计数不能大于池设置配置的最大代理数。

每隔几分钟,托管 DevOps 池就会检查运行作业的活动代理和等待作业的备用代理计数,以确保当前预配方案指定的代理的预配计数可用。 如果当前预配计数为 10,并且有五个代理在备用状态下运行作业和两个代理,则托管 DevOps 池将启动另外三个备用代理,使代理总数最多达到 10 个。

可以通过以下三种方式之一配置手动备用代理配置。

除了该快速入门的特定设置外,每个预预配快速入门都有以下常见设置。

  • 预预配 TimeZone 允许为预预配方案中的时间配置时区。 预预配时区的默认值为 (UTC) 协调世界时
  • 备用代理百分比 配置每个映像所需的备用代理百分比。 可以输入 * 以确保预配所有映像均等,也可以指定一个介于 0 到 100 的整数,以表示百分比。 如果指定百分比,则所有图像的总数必须等于 100。 如果你有单个映像,请指定 * 或 100。 使用 ARM 模板时,节images中配置了备用代理百分比。 有关详细信息,请参阅 “配置映像”。

手动待机模式的屏幕截图。

从头开始

如果选择从头开始,可以添加预配周期列表以用作预配方案。 每个预配周期由开始日、结束日、时区、开始时间、结束时间和计数组成。 预配周期不能相互重叠。

properties 说明
多日 选中后,可以为预配方案配置“开始日”和“结束日”。
直到下一个时间段 选中后,预配周期从“开始时间”运行到下一个预配周期的开始。
开始日期 预配周期开始的一天。
结束日期 预配期结束的一天。 如果选中了多天,则为必需。
开始时间 预配周期开始的时间。
结束时间 预配期结束的时间。 必需,除非 检查下一个时间段
计数 要预配的备用代理数。 此数字必须大于零,并且不能大于 池设置中配置的最大代理 值。

创建预配期后,可以从预预配方案列表中删除或编辑该时间段

以下示例配置一个手动方案,其中 1 个代理在星期一上午 12:00 AM 到 5:00 AM EST 预配。

手动缩放方案的屏幕截图。

工作日方案

如果选择工作日方案,则可以指定一个开始时间和结束时间,在此时间中,指定的备用代理数将在每个工作日处于备用状态。

properties 说明
开始时间 预配周期开始的时间。
结束时间 预配期结束的时间。
预配计数 要预配的备用代理数。 此数字必须大于零,并且不能大于 池设置中配置的最大代理 值。

以下示例使用东部标准时间将四个代理配置为在工作时间与 0 个代理在非工作时间和周末使用。

工作日方案的屏幕截图。

全周方案

如果选择全周方案,可以指定想要使用 24/7 的代理数。

所有星期方案的屏幕截图。

自动

如果不知道使用模式,并且想要依赖基于过去数据的自动预测,请选择“ 自动”。 可以使用具有以下五个选项的滑块在成本和代理性能之间平衡。 托管 DevOps 池在过去三周的历史数据(如果可用)中运行查询,将池的排队会话组织成五分钟,并将指定的百分位数(以避免峰值)分配给每小时。

  • 最经济高效MostCostEffective) - 第 10 百分位
  • 更具成本效益MoreCostEffective) - 第 25 百分位
  • 均衡 (默认值) (Balanced) - 第 50 百分位
  • 更多性能MorePerformance) - 第 75 百分位
  • 最佳性能 (BestPerformance) - 第 90 百分位

自动缩放设置的屏幕截图。

另请参阅