Вы можете управлять производительностью и стоимостью экземпляра управляемых пулов DevOps, настроив параметры масштабирования. Сведения о ценах и производительности см. в статье "Управление затратами и производительностью".
Состояние агента
Вы можете настроить пулы как:
Настройка по умолчанию для пула — это отсутствие сохранения состояния, что можно настроить с помощью агента Fresh каждый раз. В некоторых случаях командам может потребоваться повторно использовать агенты для повторного использования пакетов или файлов, созданных во время предыдущего запуска конвейера. Рабочая нагрузка сборочного процесса — это типичный сценарий, где команды стремятся сохранить состояние и повторно использовать агентов. Пулы с отслеживанием состояния можно реализовать с помощью управляемых пулов DevOps, соблюдая баланс с лучшими практиками безопасности. Агент можно повторно использовать не более семи дней по умолчанию, но его можно перезапустить раньше.
Примечание.
Агенты безопасности рекомендуют пользователям использовать бесcостояные пулы для защиты от атак цепочки поставок. Каждый раз используйте настройку состояния свежий агент.
Пулы без отслеживания состояния
При настройке статического агента новый агент приобретается для каждой задачи. Агент удаляется после завершения задания.
Дополнительные сведения о жизненном цикле агентов без состояния и их использовании в Azure Pipelines смотрите в разделе Lifecycle агентов и потенциальных задержек выделения.
Для настройки агентов можно использовать свойство agentProfile в ресурсе управляемых пулов DevOps. В следующем примере указывается Stateless агент.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2025-09-20",
"location": "eastus",
"properties": {
...
"agentProfile": {
"kind": "Stateless"
}
}
}
]
}
Агенты можно настроить с помощью agent-profile параметра при создании или обновлении пула.
В следующем примере указан агент Stateless без резервных агентов.
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
В следующем примере показано содержимое файла agent-profile.json .
{
"Stateless": {}
}
Для настройки агентов можно использовать свойство agentProfile в ресурсе управляемых пулов DevOps. В следующем примере указывается Stateless агент.
resource managedDevOpsPools 'Microsoft.DevOpsInfrastructure/pools@2025-09-20' = {
name: 'fabrikam-managed-pool'
location: 'eastus'
properties: {
...
agentProfile: {
kind: 'Stateless'
}
}
}
При установке состояния агента на новый агент каждый раз, новый агент приобретается для каждого задания. Агент удаляется после завершения задания.
Пулы с состоянием
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2025-09-20",
"location": "eastus",
"properties": {
...
"agentProfile": {
"maxAgentLifetime": "7.00:00:00",
"gracePeriodTimeSpan": "00:30:00",
"kind": "Stateful"
}
}
}
]
}
Агенты можно настроить с помощью agent-profile параметра при создании или обновлении пула.
В следующем примере указывается Stateful агент с семидневным максимальным временем существования и тридцатиминутным льготным периодом.
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
В следующем примере показано содержимое agent-profile.json файла.
{
"Stateful":
{
"maxAgentLifetime": "7.00:00:00",
"gracePeriodTimeSpan": "00:30:00"
}
}
resource managedDevOpsPools 'Microsoft.DevOpsInfrastructure/pools@2025-09-20' = {
name: 'fabrikam-managed-pool'
location: 'eastus'
properties: {
...
agentProfile: {
kind: 'Stateful'
maxAgentLifetime: '7.00:00:00'
gracePeriodTimeSpan:'00:30:00'
}
}
}
Если включить параметр Агент может использоваться несколькими сборками (настройка "kind": "stateful" в шаблонах ресурсов или настройка { "stateful": {...} } в Azure CLI), агенты в пуле являются с сохранением состояния. Состоянием отслеживаемых пулов можно управлять с помощью следующих параметров:
Максимальное время жизни для резервных агентов (maxAgentLifetime) настраивает максимальную длительность, которую агент в пуле с сохранением состояния может выполняться перед завершением и аннулированием. Формат для максимального времени жизни для резервных агентов - это dd.hh:mm:ss. Значение по умолчанию для Максимального времени жизни для резервных агентов установлено на максимально допустимый срок в семь дней (7.00:00:00).
Льготный период (gracePeriodTimeSpan) устанавливает период времени, в течение которого агент в пуле с отслеживанием состояния ожидает новых заданий, прежде чем завершить работу после выполнения всех текущих и запланированных заданий. Формат для льготного периода — dd.hh:mm:ss, а по умолчанию — отсутствие льготного периода.
Внимание
Если задание выполняется в момент истечения интервала максимального времени жизни для резервных агентов, агент не завершит работу до завершения задания, если только выполнение задания не займет более двух дней. Отдельные задания в управляемых пулах DevOps могут выполняться не более двух дней, даже если они работают в резервном агенте с более чем двумя днями, настроенными на максимальное время жизни для резервных агентов. (Управляемый пул DevOps поддерживает конвейеры, которые выполняются дольше двух дней, разбив их на несколько коротких заданий, которые выполняются в течение двух дней или меньше.)
Агенты в бесстатусных пулах завершаются и ликвидируются после каждого задания. Агенты в пулах с отслеживанием состояния продолжают работать, если выполнены какие-либо из следующих условий:
- Если при завершении первого задания поставлено в очередь другое задание, управляемые пулы DevOps отправляют задание в очередь агенту, который выполнял первое задание, а не завершает работу.
- Если для пула настроен льготный период, агенты ожидают новых заданий в течение длительности, указанной льготным периодом, прежде чем завершить работу.
- Если резервные агенты включены и образ агента соответствует критериям активного периода подготовки, агент продолжает работать и ожидать задания.
Агенты, запущенные в пуле с состоянием, завершают работу и удаляются, если они продолжают работать непрерывно в течение времени, указанного в параметре максимальное время жизни для резервных (standby) агентов, даже если предыдущие условия выполняются. Например, если для резервных агентов настроено максимальное время жизни на три дня, а режим резервного агента установлен как вручную, схема на всю неделю (компьютеры доступны 24/7), агенты будут перезагружены после трех дней непрерывной работы.
Внимание
Агенты в пулах с отслеживанием состояния могут быть выключены и удалены после завершения задания, в случае если нет льготного периода, нет активного периода подготовки для резервных агентов и нет очереди заданий, соответствующих агенту. При удалении агента любое состояние теряется.
Периоды отсрочки позволяют использовать наиболее экономичные способы запуска пулов с сохранением состояния для потоков обработки с согласованной нагрузкой. Льготные периоды не требуют использования режима ожидания агента для поддержания агентов в сети и готовности к приему заданий.
Режим резервного агента
При создании пула режим резервного агента по умолчанию отключен. Если режим резервного агента отключен, резервные агенты не будут немедленно назначаться конвейерам. Ваши конвейеры могут ждать от нескольких секунд до 15 минут, пока агент подготовится по требованию. Для повышения производительности включите режим резервного агента и настройте расписание резервного агента, которое обеспечивает емкость рабочей нагрузки.
При настройке расписания резервного агента управляемые пулы DevOps периодически сравнивают количество подготовленных агентов с числом резервных агентов, указанными в текущей схеме подготовки. Он запускает новых агентов по мере необходимости для поддержания количества резервных агентов. Текущее состояние и количество агентов в пуле можно просмотреть с помощью панели "Агенты ".
Внимание
Количество выделения в схеме не может быть больше значения «Максимальное количество агентов», которое вы настраиваете в параметрах пула.
Режим резервного агента можно настроить с помощью следующих параметров:
-
Отключен: режим ожидания агента отключен, а агенты выделяются по запросу, когда задания помещаются в очередь.
-
Руководство: Настройте расписание резервного ожидания вручную.
-
Автоматически. Используйте автоматическое расписание ожидания на основе журнала использования агента. Его можно настроить для оптимизации затрат и производительности.
Резервные агенты можно настроить, используя секцию resourcePredictionsProfile свойства agentProfile. Задайте "kind": "Manual" для настройки начальной схемы, схемы недели или всей недели и укажите сведения о схеме resourcePredictions в разделе. Чтобы настроить автоматические резервные агенты, установите этот параметр "kind": "Automatic". Отключите резервные агенты, опустив ResourcePredictionsProfile раздел. Дополнительные сведения о настройке каждого типа масштабирования см. в следующих разделах.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2025-09-20",
"location": "eastus",
"properties": {
...
"agentProfile": {
"kind": "Stateless",
"resourcePredictionsProfile": {
"kind": "Manual"
},
"resourcePredictions": {...}
}
}
}
]
}
Агенты можно настроить с помощью agent-profile параметра при создании или обновлении пула.
Резервные агенты можно настроить с помощью resourcePredictionsProfile раздела agent-profile параметра.
"Manual": {} Используйте параметр, чтобы настроить схему с нуля, схему для буднего дня или схему на всю неделю, и указать детали этой схемы в разделе resourcePredictions. Чтобы настроить автоматические резервные "Automatic": {} агенты, используйте этот параметр. Дополнительные сведения о настройке каждого типа масштабирования см. в следующих разделах.
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
В следующем примере показано содержимое agent-profile.json файла:
{
"Stateless": {},
"resourcePredictionsProfile": {
"Manual": {}
},
"resourcePredictions": {...}
}
Резервные агенты можно настроить, используя секцию resourcePredictionsProfile свойства agentProfile.
"kind": "Manual" Используйте параметр, чтобы настроить схему с нуля, схему для буднего дня или схему на всю неделю, и указать детали этой схемы в разделе resourcePredictions. Чтобы настроить автоматические резервные kind: 'Automatic' агенты, используйте этот параметр. Отключите резервные агенты, опустив ResourcePredictionsProfile раздел. Дополнительные сведения о настройке каждого типа масштабирования см. в следующих разделах.
resource managedDevOpsPools 'Microsoft.DevOpsInfrastructure/pools@2025-09-20' = {
name: 'fabrikam-managed-pool'
location: 'eastus'
properties: {
...
agentProfile: {
kind: 'Stateless'
resourcePredictionsProfile: {
kind: 'Manual'
}
resourcePredictions: {...}
}
}
}
Руководство
Режим вручную лучше всего подходит для команд, которые знают шаблоны использования конвейера непрерывной интеграции и непрерывной доставки (CI/CD). При выборе ручного режима необходимо задать схему предварительной настройки. Вы определяете схему на основе понимания того, какие агенты в пуле, скорее всего, будут использоваться, и сколько агентов, скорее всего, будет использоваться. Вы указываете количество агентов для обеспечения, соответствующих прогнозируемому спросу.
Вы можете создать собственное расписание подготовки или выбрать один из стандартных расписаний. Вы можете настроить часовой пояс для указания расписаний. Значением по умолчанию для часового пояса предварительной настройки является (UTC) Координированное универсальное время.
Резервные агенты вручную можно настроить одним из следующих трех способов:
Каждое из быстрых руководств по предварительной подготовке содержит следующие общие параметры (в дополнение к параметрам, характерным для данного руководства):
- Предварительное настройка часового пояса: позволяет настроить часовой пояс для периодов времени в вашей схеме предварительного обеспечения. Значением по умолчанию для Pre-provisioning TimeZone является (UTC) всемирное координированное время.
-
Процент резервного агента: настраивает процент резервных агентов, которые требуется для каждого образа. Можно ввести
*, чтобы убедиться, что все изображения подготовлены одинаково, или можно указать целое число от 0 до 100 для указания процента. Если указать процент, общее значение для всех изображений должно быть равно 100. Если у вас есть один образ, укажите * или 100. При использовании шаблонов Azure Resource Manager (шаблоны ARM) можно настроить параметр Процент агентаStandby в разделе images. Дополнительные сведения см. в разделе "Настройка образов".
Вы можете указать подготовку резервных агентов вручную в разделе resourcePredictionsProfileagentProfile. Вы можете настроить сведения в разделе resourcePredictions.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2025-09-20",
"location": "eastus",
"properties": {
...
"agentProfile": {
"kind": "Stateless",
"resourcePredictionsProfile": {
"kind": "Manual"
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"00:00:00": 1,
"04:00:00": 0
},
{},
{},
{},
{},
{}
]
}
}
}
}
]
}
Укажите требуемый часовой пояс для схемы с помощью timeZone свойства. Значение по умолчанию — UTC. Чтобы получить список имен часовых поясов для этого свойства, см. метод TimeZoneInfo.GetSystemTimeZones.
Расписание резервных агентов можно определить с помощью daysData списка. Список daysData может содержать один или семь элементов.
daysData Список с семью элементами сопоставляется с днями недели, начиная с воскресенья. Каждый из этих семи элементов может содержать ноль или более "time": count записей, указывающих время в 24-часовом формате и количество резервных агентов. Указанное количество резервных агентов сохраняется до следующей записи, которая может быть в тот "time": count же день или в следующий день.
Список daysData с одним элементом определяет схему All-week, где одна "time": count запись соответствует счетчику резервных агентов на всю неделю.
В следующем примере представлена схема ручного резервного агента. Он использует значение Eastern Standard Time с одним агентом, работающим с понедельника по пятницу с 9:00 (число резервных агентов: 1) до 17:00 (число резервных агентов: 0).
{
"kind": "Stateless",
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{}
]
},
"resourcePredictionsProfile": {
"kind": "Manual"
}
}
daysData Один элемент содержит словарь времени и количества резервных агентов. Каждая запись данных "time" : count указывает количество резервных агентов, которых нужно запланировать, начиная с заданного времени, в 24-часовом формате. Последовательные "time" : count записи указывают последовательность запланированных на этот день количеств агентов.
"daysData": [
{}, # Schedule of standby agent count adjustments for Sunday
{ # Schedule of standby agent count adjustments for Monday
"09:00:00": 1, # Adjust standby agent count to 1
"17:00:00": 0 # Adjust standby agent count to 0
},
{ # Schedule of standby agent count adjustments for Tuesday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Wednesday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Thursday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Friday
"09:00:00": 1,
"17:00:00": 0
},
{} # Schedule of standby agent count adjustments for Saturday
]
Счётчики резервных агентов не обнуляются автоматически в конце дня или в конце недели. Указание пустого daysData элемента не отключает агентов в режиме ожидания на этот день. Пустой daysData элемент означает, что в этот день нет изменений в расписании количества резервных агентов. Чтобы задать резервный агент равным нулю, начиная с определенного периода времени, необходимо явно указать "time" : count запись со значением count0.
Примеры
Чтобы не вносить корректировки в число резервных агентов, которое указывалось в конце предыдущего дня (или недели, если вы настраиваете первый период недели), задайте элемент daysData с нулевыми записями:
{}
Чтобы запланировать время начала работы резервного агента в 09:00:00, а окончания в 17:00:00 (используя часовой пояс, указанный в свойстве resourcePredictions), укажите следующую конфигурацию:
{
"09:00:00": 1,
"17:00:00": 0
}
Чтобы запланировать одного резервного агента, начиная с полуночи до 09:00:00, а затем 10 резервных агентов до 17:00:00, укажите следующую конфигурацию:
{
"00:00:00": 1,
"09:00:00": 10,
"17:00:00": 0
}
Чтобы запланировать доступность резервного агента с 09:00:00 в указанную дату и до 17:00:00 на следующий день, используйте два последовательных элемента daysData.
{
"09:00:00": 1
},
{
"17:00:00": 0
}
Агенты можно настроить с помощью agent-profile параметра при создании или обновлении пула.
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
В следующем примере показано содержимое файла agent-profile.json . Вы можете указать подготовку резервного resourcePredictionsProfile агента вручную в agent-profile разделе параметра. Настройте сведения в resourcePredictions разделе:
{
"Stateless": {},
"resourcePredictionsProfile": {
"Manual": {}
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"00:00:00": 1,
"04:00:00": 0
},
{},
{},
{},
{},
{}
]
}
}
Укажите часовой пояс схемы с помощью timeZone свойства. Значение по умолчанию — UTC. Чтобы получить список имен часовых поясов для этого свойства, см. метод TimeZoneInfo.GetSystemTimeZones.
Список daysData определяет расписание для резервных агентов. Список daysData может содержать один или семь элементов.
daysData Список с семью элементами соответствует дням недели, начиная с воскресенья. Каждый из этих семи элементов может содержать ноль или более "time": count записей, указывающих время в 24-часовом формате и количество резервных агентов. Указанное количество резервных агентов сохраняется до следующей записи, которая может быть в тот "time": count же день или в следующий день.
Список daysData с одним элементом обозначает схему на всю неделю, где одна "time": count запись соответствует количеству резервных агентов в течение всей недели.
В следующем примере представлена схема ручного резервного агента. Схема использует значение Eastern Standard Time с одним агентом, подготовленным с понедельника по пятницу, с 9:00 (число 1 резервных агентов) до 5:00 (число 0 резервных агентов):
{
"Stateless": {},
"resourcePredictionsProfile": {
"Manual": {}
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{}
]
}
}
daysData Один элемент содержит словарь времени и количества резервных агентов. Каждая запись данных "time" : count указывает количество резервных агентов, которых нужно запланировать, начиная с заданного времени, в 24-часовом формате. Последовательные "time" : count записи указывают последовательность запланированного числа агентов на этот день.
"daysData": [
{}, # Schedule of standby agent count adjustments for Sunday
{ # Schedule of standby agent count adjustments for Monday
"09:00:00": 1, # Adjust standby agent count to 1
"17:00:00": 0 # Adjust standby agent count to 0
},
{ # Schedule of standby agent count adjustments for Tuesday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Wednesday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Thursday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Friday
"09:00:00": 1,
"17:00:00": 0
},
{} # Schedule of standby agent count adjustments for Saturday
]
Счётчики резервных агентов не обнуляются автоматически в конце дня или в конце недели. Указание пустого daysData элемента не отключает агентов в режиме ожидания на этот день. Пустой daysData элемент означает, что в этот день нет изменений в расписании количества резервных агентов. Чтобы задать резервный агент равным нулю, начиная с определенного периода времени, необходимо явно указать "time" : count запись со значением count0.
Примеры
Если вы не хотите настраивать указанное число резервных агентов в конце предыдущего дня (или недели, если вы настраиваете первый период недели), укажите daysData элемент с нулевыми записями:
{}
Чтобы запланировать запуск и остановку 09:00:0017:00:00 одного резервного агента (с помощью часового пояса, указанного в свойстве resourcePredictions ), укажите следующую конфигурацию:
{
"09:00:00": 1,
"17:00:00": 0
}
Чтобы запланировать одного резервного агента, начиная с полуночи до 09:00:00, а затем 10 резервных агентов до 17:00:00, укажите следующую конфигурацию:
{
"00:00:00": 1,
"09:00:00": 10,
"17:00:00": 0
}
Чтобы запланировать доступность резервного агента с 09:00:00 в указанную дату и до 17:00:00 на следующий день, используйте два последовательных элемента daysData.
{
"09:00:00": 1
},
{
"17:00:00": 0
}
Вы можете указать подготовку резервных агентов вручную в разделе resourcePredictionsProfileagentProfile. Детали в resourcePredictions разделе можно настроить.
resource managedDevOpsPools 'Microsoft.DevOpsInfrastructure/pools@2025-09-20' = {
name: 'fabrikam-managed-pool'
location: 'eastus'
properties: {
...
agentProfile: {
kind: 'Stateless'
resourcePredictionsProfile: {
kind: 'Manual'
}
resourcePredictions: {
timeZone: 'Eastern Standard Time'
daysData: [
{}
{
'00:00:00': 1
'04:00:00': 0
}
{}
{}
{}
{}
{}
]
}
}
}
}
Укажите требуемый часовой пояс для схемы с помощью timeZone свойства. Значение по умолчанию — UTC. Чтобы получить список имен часовых поясов для этого свойства, см. метод TimeZoneInfo.GetSystemTimeZones.
Список daysData определяет расписание для резервных агентов. Список daysData может содержать один или семь элементов.
daysData Список из семи элементов соответствует дням недели, начиная с воскресенья. Каждый из этих семи элементов может содержать ноль или более 'time': count записей, указывающих время в 24-часовом формате и количество резервных агентов. Указанное количество резервных агентов сохраняется до следующей записи, которая может быть в тот 'time': count же день или в следующий день.
Список daysData с одним элементом обозначает схему на всю неделю, где одна 'time': count запись соответствует количеству резервных агентов в течение всей недели.
В следующем примере показана схема ручного резервного агента, использующая значение Eastern Standard Time, с одним агентом, назначенным с понедельника по пятницу, с 9:00 (число резервных агентов 1) до 17:00 (число резервных агентов 0).
{
kind: 'Stateless'
resourcePredictions: {
timeZone: 'Eastern Standard Time'
daysData: [
{}
{
'09:00:00': 1
'17:00:00': 0
}
{
'09:00:00': 1
'17:00:00': 0
}
{
'09:00:00': 1
'17:00:00': 0
}
{
'09:00:00': 1
'17:00:00': 0
}
{
'09:00:00': 1
'17:00:00': 0
}
{}
]
}
resourcePredictionsProfile: {
kind: 'Manual'
}
}
daysData Один элемент содержит словарь времен и количества резервных агентов. Каждая запись данных 'time' : count указывает количество резервных агентов, которых нужно запланировать, начиная с заданного времени, в 24-часовом формате. Последовательные 'time' : count записи указывают последовательность запланированных количеств агентов на этот день.
daysData: [
{} // Schedule of standby agent count adjustments for Sunday
{ // Schedule of standby agent count adjustments for Monday
'09:00:00': 1 // Adjust standby agent count to 1
'17:00:00': 0 // Adjust standby agent count to 0
}
{ // Schedule of standby agent count adjustments for Tuesday
'09:00:00': 1
'17:00:00': 0
}
{ // Schedule of standby agent count adjustments for Wednesday
'09:00:00': 1
'17:00:00': 0
}
{ // Schedule of standby agent count adjustments for Thursday
'09:00:00': 1
'17:00:00': 0
}
{ // Schedule of standby agent count adjustments for Friday
'09:00:00': 1
'17:00:00': 0
}
{} // Schedule of standby agent count adjustments for Saturday
]
Счетчики резервных агентов не обнуляются автоматически в конце дня или недели, и указание пустого daysData элемента не отключает резервных агентов на этот день. Пустой daysData элемент означает, что в этот день нет изменений в расписании количества резервных агентов. Чтобы задать резервный агент равным нулю, начиная с определенного периода времени, необходимо явно указать "time" : count запись со значением count0.
Примеры
Чтобы не вносить корректировки в число резервных агентов, которое указывалось в конце предыдущего дня (или недели, если вы настраиваете первый период недели), задайте элемент daysData с нулевыми записями:
{}
Чтобы запланировать запуск и остановку 09:00:0017:00:00 одного резервного агента (с помощью часового пояса, указанного в свойстве resourcePredictions ), укажите следующую конфигурацию:
{
'09:00:00': 1
'17:00:00': 0
}
Чтобы запланировать одного резервного агента, начиная с полуночи до 09:00:00, а затем 10 резервных агентов до 17:00:00, укажите следующую конфигурацию:
{
'00:00:00': 1
'09:00:00': 10
'17:00:00': 0
}
Чтобы запланировать доступность резервного агента с 09:00:00 в указанную дату и до 17:00:00 на следующий день, используйте два последовательных элемента daysData.
{
'09:00:00': 1
}
{
'17:00:00': 0
}
Начать с нуля
Если вы решили начать с нуля, вы можете добавить список периодов подготовки в качестве схемы подготовки. Каждый период выделения ресурсов состоит из начального дня, дня окончания, часового пояса, времени начала, времени окончания и подсчета. Периоды подготовки не могут перекрываться друг с другом.
| Свойство |
Описание |
|
Многодневное |
При выборе этого параметра можно настроить как день начала , так и день окончания для схемы подготовки. |
|
До следующего периода |
При выборе этого параметра период предоставления начинается со значения времени начала и продолжается до начала следующего периода предоставления. |
|
День начала |
День начала периода предоставления. |
|
Конечный день |
День окончания периода предоставления. Требуется, если выбран многодневный режим. |
|
Время начала |
Время начала периода предоставления. |
|
Конец времени |
Время окончания периода предоставления. Требуется, если не выбран параметр До следующего периода. |
|
Количество |
Количество резервных агентов для назначения. Это число должно быть больше нуля и не должно быть больше значения максимальных агентов в параметрах пула. |
После создания периода подготовки можно удалить или изменить период из списка схем предварительной подготовки .
В следующем примере показано, как настроить ручную схему с одним агентом, развернутым ранним утром в понедельник с 00:00 до 05:00 по EST.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2025-09-20",
"location": "eastus",
"properties": {
...
"agentProfile": {
"kind": "Stateless",
"resourcePredictionsProfile": {
"kind": "Manual"
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"00:00:00": 1,
"04:00:00": 0
},
{},
{},
{},
{},
{}
]
}
}
}
}
]
}
{
"Stateless": {},
"resourcePredictionsProfile": {
"Manual": {}
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"00:00:00": 1,
"04:00:00": 0
},
{},
{},
{},
{},
{}
]
}
}
resource managedDevOpsPools 'Microsoft.DevOpsInfrastructure/pools@2025-09-20' = {
name: 'fabrikam-managed-pool'
location: 'eastus'
properties: {
...
agentProfile: {
kind: 'Stateless'
resourcePredictionsProfile: {
kind: 'Manual'
}
resourcePredictions: {
timeZone: 'Eastern Standard Time'
daysData: [
{}
{
'00:00:00': 1
'04:00:00': 0
}
{}
{}
{}
{}
{}
]
}
}
}
}
Схема еженедельного дня
Если выбрать схему дня недели, можно указать время начала и окончания, между которым указанное число резервных агентов находятся в режиме ожидания каждый рабочий день.
| Свойство |
Описание |
|
Время начала |
Время начала периода предоставления. |
|
Конец времени |
Время окончания периода предоставления. |
|
Количество развертываний |
Количество резервных агентов для назначения. Это число должно быть больше нуля и не должно быть больше значения максимальных агентов , настроенных в параметрах пула. |
В следующем примере четыре агента назначены для использования в рабочее время, а агенты не назначаются в нерабочие часы и выходные дни в восточном времени (UTC-5).
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2025-09-20",
"location": "eastus",
"properties": {
...
"agentProfile": {
"kind": "Stateless",
"resourcePredictionsProfile": {
"kind": "Manual"
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{}
]
}
}
}
}
]
}
{
"Stateless": {},
"resourcePredictionsProfile": {
"Manual": {}
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{}
]
}
}
resource managedDevOpsPools 'Microsoft.DevOpsInfrastructure/pools@2025-09-20' = {
name: 'fabrikam-managed-pool'
location: 'eastus'
properties: {
...
agentProfile: {
kind: 'Stateless'
resourcePredictionsProfile: {
kind: 'Manual'
}
resourcePredictions: {
timeZone: 'Eastern Standard Time'
daysData: [
{}
{
'09:00:00': 4
'17:00:00': 0
}
{
'09:00:00': 4
'17:00:00': 0
}
{
'09:00:00': 4
'17:00:00': 0
}
{
'09:00:00': 4
'17:00:00': 0
}
{
'09:00:00': 4
'17:00:00': 0
}
{}
]
}
}
}
}
Расписание на всю неделю
Если выбрать схему на всю неделю, можно задать количество агентов, которые вы хотите иметь доступными всё время.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2025-09-20",
"location": "eastus",
"properties": {
...
"agentProfile": {
"kind": "Stateless",
"resourcePredictionsProfile": {
"kind": "Manual"
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{
"00:00:00": 1
}
]
}
}
}
}
]
}
{
"Stateless": {},
"resourcePredictionsProfile": {
"Manual": {}
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{
"00:00:00": 1
}
]
}
}
resource managedDevOpsPools 'Microsoft.DevOpsInfrastructure/pools@2025-09-20' = {
name: 'fabrikam-managed-pool'
location: 'eastus'
properties: {
...
agentProfile: {
kind: 'Stateless'
resourcePredictionsProfile: {
kind: 'Manual'
}
resourcePredictions: {
timeZone: 'Eastern Standard Time'
daysData: [
{
'00:00:00': 1
}
]
}
}
}
}
Автоматически
Если вы не знаете шаблоны использования и хотите полагаться на автоматическое прогнозирование на основе прошлых данных, выберите "Автоматически". Вы можете сбалансировать затраты и производительность агентов с помощью ползунка со следующими пятью вариантами. Управляемые пулы DevOps выполняют запрос за последние три недели исторических данных (если они доступны). Он упорядочивает очередные сеансы пула в пятиминутные периоды и назначает указанный процентиль (чтобы избежать пиков) каждому часу.
-
Наиболее экономически эффективный (
MostCostEffective): 10-й процентиль.
-
Более экономичное (
MoreCostEffective): 25-й процентиль.
-
Balanced (default) (
Balanced): 50-й процентиль.
-
Больше производительности (
MorePerformance): 75-й процентиль.
-
Лучшая производительность (
BestPerformance): 90-й процентиль.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2025-09-20",
"location": "eastus",
"properties": {
...
"agentProfile": {
"kind": "Stateless",
"resourcePredictionsProfile": {
"predictionPreference": "Balanced",
"kind": "Automatic"
}
}
}
}
]
}
{
"Stateless": {},
"resourcePredictionsProfile": {
"Automatic": {
"predictionPreference": "Balanced"
}
}
}
resource managedDevOpsPools 'Microsoft.DevOpsInfrastructure/pools@2025-09-20' = {
name: 'fabrikam-managed-pool'
location: 'eastus'
properties: {
...
agentProfile: {
kind: 'Stateless'
resourcePredictionsProfile: {
kind: 'Automatic'
predictionPreference: 'Balanced'
}
}
}
}
Жизненный цикл агентов и потенциальные задержки в выделении
Если вы включите резервные агенты, используя схему stateless, необходимо установить и настроить агент Azure Pipelines перед переходом из состояния ready в состояние allocated и запуском конвейера.
Когда управляемые пулы DevOps подготавливают новых агентов, они пытаются скачать последнюю версию агента Azure Pipelines, чтобы она была уже загружена на резервных агентов перед переходом в состояние готовности. Запуск, подключение и начало задания может занять от 10 секунд до минуты в зависимости от скорости SKU пула, используемого образа и сетевой нагрузки. Кроме того, указание определенных параметров в задании конвейера может привести к повторной загрузке и запуску другого агента. Регрессии и откаты агента также могут вызвать его повторную загрузку.
Готовые агенты всегда имеют потенциальную задержку, так как управляемые пулы DevOps используют этого агента во временном режиме, что означает, что мы запускаем агент задач один раз на задание. Если вы видите задержки в том, как готовые агенты забирают задания из Azure DevOps, рассмотрите следующие вопросы:
- Есть ли у вас готовые агенты? Наиболее распространенной проблемой является недоразумение о том, когда агенты должны быть предварительно подготовлены. При выполнении следующих условий машины должны запускаться с нуля:
- Количество заданий в очереди превышает количество резервных агентов в пуле.
- Задания ставятся в очередь вне плана предварительного распределения.
- Число резервных агентов должно быть пустым.
- Правильно ли вы настраиваете резервные агенты с несколькими изображениями? Если вы не указываете, какой образ следует использовать в конвейере с помощью запроса ImageOverride , задания предназначены для первого образа. В зависимости от настроек масштабирования у вас может быть не так много агентов, как ожидалось, поскольку некоторые из них выделены для других изображений.
- Вы используете
ImageVersionOverride спрос в конвейерных системах? Если вы используете ImageVersionOverride запрос, чтобы указать другую версию образа, отличную от того, что настроено в параметрах пула, каждый агент запускается по запросу с помощью указанной версии образа. Резервные агенты подготавливаются с помощью версий образов, указанных в конфигурации пула. Если вы используете ImageVersionOverride, то ни один из резервных агентов не соответствует этой версии, так что запускается новый агент.
- Замедляется ли работа вашего пула из-за настроек прокси-сервера, виртуальной сети или брандмауэра? Потенциальная задержка в любом сетевом параметре может привести к тому, что агенты дольше запускаются и подключаются к Azure DevOps.
- Вы изменяете версию агента? По умолчанию управляемые пулы DevOps выполняются в последней версии агента задач Azure DevOps. Параметры в YAML конвейера (например,
Agent.Version требование) и параметры организации Azure DevOps могут принудительно заставить использовать более старые версии агента задач, что требует их повторной загрузки после выделения машины.
Связанный контент