Você pode gerenciar o desempenho e o custo de sua instância de Pools de DevOps Gerenciados definindo as configurações de dimensionamento. Para obter informações sobre preços e desempenho, consulte Gerenciar custo e desempenho.
Estado do agente
Você pode configurar pools como:
-
Sem Estado: forneça um novo agente para cada tarefa.
-
Stateful: Permite o compartilhamento de agentes entre vários trabalhos.
A configuração padrão para um pool é 'stateless', o que pode ser alcançado usando a configuração Agente novo a cada vez. Em alguns casos, as equipes podem querer reutilizar agentes para reutilizar os pacotes ou arquivos criados durante a execução de pipeline anterior. A carga de trabalho de compilação é um cenário comum em que as equipes desejam preservar o estado e reutilizar os agentes. Você pode obter pools com monitoração de estado por meio de Pools de DevOps Gerenciados, equilibrando-os com as práticas recomendadas de segurança. Um agente pode ser reutilizado por um máximo de sete dias por padrão, mas você pode configurá-lo para ser reciclado mais cedo.
Nota
Os agentes de segurança recomendam que os utilizadores usem pools stateless como defesa contra ataques à cadeia de fornecimento. Utilize a configuração de estado Agente fresco sempre.
Piscinas sem estado
Quando configura um agente sem estado, um novo agente é adquirido para cada tarefa. O agente é descartado após a conclusão do trabalho.
Para saber mais sobre o ciclo de vida dos agentes sem estado e como eles são usados no Azure Pipelines, consulte a seção Ciclo de vida dos agentes e possíveis atrasos na alocação .
Você pode configurar agentes usando a agentProfile propriedade no recurso Managed DevOps Pools. O exemplo a seguir especifica um Stateless agente.
{
"$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"
}
}
}
]
}
Você pode configurar agentes usando o agent-profile parâmetro ao criar ou atualizar um pool.
O exemplo a seguir especifica um agente Stateless sem agentes de reserva.
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
O exemplo a seguir mostra o conteúdo do arquivo agent-profile.json.
{
"Stateless": {}
}
Você pode configurar agentes usando a agentProfile propriedade no recurso Managed DevOps Pools. O exemplo a seguir especifica um Stateless agente.
resource managedDevOpsPools 'Microsoft.DevOpsInfrastructure/pools@2025-09-20' = {
name: 'fabrikam-managed-pool'
location: 'eastus'
properties: {
...
agentProfile: {
kind: 'Stateless'
}
}
}
Quando você define o estado do agente como Agente novo toda vez, um novo agente é adquirido para cada tarefa. O agente é descartado após a conclusão do trabalho.
Piscinas com estado
{
"$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"
}
}
}
]
}
Você pode configurar agentes usando o agent-profile parâmetro ao criar ou atualizar um pool.
O exemplo a seguir especifica um Stateful agente com um tempo de vida máximo de sete dias e um período de carência de trinta minutos.
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
O exemplo a seguir mostra o conteúdo do agent-profile.json arquivo.
{
"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'
}
}
}
Quando ativar O mesmo agente pode ser utilizado por várias compilações (configuração em modelos de recursos ou configuração na CLI do Azure), os agentes no pool mantêm estado. Você pode configurar pools com monitoração de estado usando as seguintes configurações:
Max time to live for standby agents (maxAgentLifetime) configura a duração máxima que um agente em um pool com estado pode executar antes de ser desligado e descartado. O formato do Max time to live para agentes em espera é dd.hh:mm:ss. O valor padrão de Max time to live para agentes em espera é definido como a duração máxima permitida de sete dias (7.00:00:00).
O Período de Carência (gracePeriodTimeSpan) configura a quantidade de tempo que um agente em um pool com monitoração de estado aguarda por novos trabalhos antes de encerrar após a conclusão de todos os trabalhos atuais e enfileirados. O formato do Período de Carência é dd.hh:mm:ss e o padrão é nenhum período de carência.
Importante
Se um trabalho estiver em execução quando expirar o intervalo de Tempo máximo de vida para agentes em espera, o agente não será desligado até que o trabalho seja concluído, a menos que demore mais de dois dias para ser concluído. Os trabalhos individuais em Pools de DevOps Gerenciados podem ser executados por no máximo dois dias, mesmo se estiverem sendo executados em um agente em espera com mais de dois dias configurado para o tempo máximo de vida útil para agentes em espera. Entre em contato com o suporte se o fluxo de trabalho exigir que você execute um único trabalho que leve mais de dois dias para ser concluído.
Os agentes em pools sem estado são desligados e descartados após cada trabalho. Os agentes em pools com monitoração de estado continuam em execução se qualquer uma das seguintes condições for atendida:
- Se outro trabalho estiver na fila quando o primeiro trabalho terminar, os Pools de DevOps Gerenciados enviarão o trabalho enfileirado para o agente que executou o primeiro trabalho em vez de encerrá-lo.
- Se houver um período de carência configurado para o pool, os agentes aguardam novas tarefas pela duração especificada pelo período de carência antes de desligarem-se.
- Se os agentes em espera estiverem habilitados e a imagem do agente atender aos critérios do período de provisionamento ativo, o agente continuará a executar e aguardar os trabalhos.
Os agentes que estão sendo executados em pools com monitoração de estado são desligados e descartados se forem executados continuamente durante a duração especificada pelo tempo máximo de vida útil para agentes em espera, mesmo que as condições anteriores sejam verdadeiras. Por exemplo, se o tempo máximo de vida para agentes em espera estiver configurado para três dias e o modo de agente em espera estiver definido como Manual, All Week Scheme (Máquinas disponíveis 24 horas por dia, 7 dias por semana), os agentes serão reiniciados após três dias contínuos de tempo de atividade.
Importante
Os agentes em pools com estado ainda podem ser desligados e descartados após a conclusão de uma tarefa se não houver período de carência, nenhum período ativo de provisionamento para agentes em espera e nenhuma tarefa em fila que corresponda ao agente. Quando um agente é descartado, qualquer estado é perdido.
Os períodos de carência permitem a maneira mais econômica de executar pools stateful para pipelines com uma carga consistente. Os períodos de carência não exigem o uso do modo de agente em espera para manter os agentes on-line e prontos para aceitar trabalhos.
Modo de agente em espera
Quando você cria um pool, o modo de agente em espera está desativado por padrão. Quando o modo de espera do agente está desativado, não há agentes de espera disponíveis para atribuir imediatamente aos seus pipelines. Os seus pipelines podem ter de esperar desde alguns momentos até 15 minutos para que um agente seja provisionado quando solicitado. Para um melhor desempenho, habilite o modo de agente em espera e configure uma agenda de agente em espera que forneça capacidade para sua carga de trabalho.
Quando você configura uma agenda de agente em espera, os Pools de DevOps Gerenciados comparam periodicamente a contagem de agentes provisionados com a contagem de agentes em espera especificada no esquema de provisionamento atual. Ele inicia novos agentes conforme necessário para manter a contagem de agentes em espera. Você pode exibir o status atual e a contagem dos agentes em seu pool usando o painel Agentes .
Importante
A contagem de provisionamento em um esquema não pode ser maior do que o valor Máximo de agentes que você define nas configurações do Pool.
Você pode configurar o modo de agente em espera usando as seguintes configurações:
-
Desativado: o modo de agente em espera está desativado e os agentes são provisionados sob demanda quando os trabalhos são enfileirados.
-
Manual: Configure um agendamento manual de espera.
-
Automático: Use uma programação automática de standby com base no histórico de uso do agente. Você pode configurá-lo para custo e desempenho.
Você pode configurar agentes de reserva usando a seção resourcePredictionsProfile da propriedade agentProfile. Defina "kind": "Manual" para configurar um esquema de início do zero, esquema de dias úteis, ou esquema para toda a semana, e especifique os detalhes do esquema na seção resourcePredictions. Para configurar agentes de espera automáticos, defina "kind": "Automatic". Desative os agentes em espera omitindo a ResourcePredictionsProfile seção. Consulte as seções a seguir para obter detalhes sobre como configurar cada tipo de dimensionamento.
{
"$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": {...}
}
}
}
]
}
Você pode configurar agentes usando o agent-profile parâmetro ao criar ou atualizar um pool.
Você pode configurar agentes de reserva usando a seção resourcePredictionsProfileagent-profile do parâmetro. Use a configuração "Manual": {} para configurar um esquema do início, um esquema diário ou semanal e especifique os detalhes do esquema na seção resourcePredictions. Para configurar agentes de espera automáticos, utilize a definição "Automatic": {}. Consulte as seções a seguir para obter detalhes sobre como configurar cada tipo de dimensionamento.
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
O exemplo a seguir mostra o conteúdo do agent-profile.json arquivo:
{
"Stateless": {},
"resourcePredictionsProfile": {
"Manual": {}
},
"resourcePredictions": {...}
}
Você pode configurar agentes em espera usando a resourcePredictionsProfileagentProfile seção da propriedade. Utilize a configuração "kind": "Manual" para configurar um esquema de início do zero, esquema de dia da semana ou esquema de toda a semana, e especifique os detalhes do esquema na seção resourcePredictions. Para configurar agentes de standby automáticos, use a definição kind: 'Automatic'. Desative os agentes em espera omitindo a ResourcePredictionsProfile seção. Consulte as seções a seguir para obter detalhes sobre como configurar cada tipo de dimensionamento.
resource managedDevOpsPools 'Microsoft.DevOpsInfrastructure/pools@2025-09-20' = {
name: 'fabrikam-managed-pool'
location: 'eastus'
properties: {
...
agentProfile: {
kind: 'Stateless'
resourcePredictionsProfile: {
kind: 'Manual'
}
resourcePredictions: {...}
}
}
}
Manual
O modo manual é melhor para equipes que conhecem seus padrões de uso de pipeline de integração contínua e entrega contínua (CI/CD). Ao usar a opção manual, você precisa definir seu esquema de pré-provisionamento. Você define seu esquema com base em sua compreensão de quais agentes no pool são mais prováveis de serem usados e quantos agentes provavelmente serão usados. Você especifica uma contagem de provisionamento de agentes que atendem à demanda projetada.
Você pode criar sua própria agenda de provisionamento ou escolher uma das agendas predefinidas. Você pode configurar o fuso horário a ser usado para especificar as agendas. O valor padrão para Pre-provisioning TimeZone é (UTC) Tempo Universal Coordenado.
Você pode configurar agentes de espera manual de uma das três maneiras a seguir:
Cada um dos inícios rápidos de pré-provisionamento tem as seguintes configurações comuns (além das configurações específicas desse início rápido):
-
Fuso horário de pré-provisionamento: Permite configurar o fuso horário para os períodos de tempo em seu esquema de pré-provisionamento. O valor padrão para Pre-provisioning TimeZone é (UTC) Tempo Universal Coordenado.
-
Porcentagem do agente em espera: configura a porcentagem de agentes em espera que você deseja para cada imagem. Você pode inserir
* para garantir que todas as imagens sejam provisionadas igualmente ou pode especificar um inteiro de 0 a 100 para representar uma porcentagem. Se você especificar uma porcentagem, o total de todas as imagens deverá ser igual a 100. Se você tiver uma única imagem, especifique * ou 100. Ao usar modelos do Azure Resource Manager (modelos ARM), você pode definir a configuração de porcentagem do agente em espera na images seção . Para obter mais informações, consulte Configurar imagens.
Você pode especificar o provisionamento manual do agente em espera na seção resourcePredictionsProfile do agentProfile. Você pode configurar os detalhes na resourcePredictions seção .
{
"$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
},
{},
{},
{},
{},
{}
]
}
}
}
}
]
}
Especifique o fuso horário desejado para seu esquema usando a timeZone propriedade. O valor predefinido é UTC. Para recuperar uma lista de nomes de fuso horário para essa propriedade, consulte Método TimeZoneInfo.GetSystemTimeZones.
Você pode definir o agendamento para agentes em espera usando a daysData lista. A daysData lista pode ter um ou sete itens.
Uma daysData lista com sete itens mapeia os dias da semana, começando pelo domingo. Cada um desses sete itens pode ter zero ou mais "time": count entradas, especificando uma hora no formato de 24 horas e uma contagem de agentes em espera. A contagem especificada de agentes em espera é mantida até a próxima "time": count entrada, que pode ser no mesmo dia ou em um dia seguinte.
Uma daysData lista com um único item define um esquema semanal completo, onde a entrada única "time": count corresponde à contagem de agentes em espera para toda a semana.
O exemplo a seguir é um esquema de agente de reserva manual. Ele utiliza o valor Eastern Standard Time com um único agente provisionado de segunda a sexta-feira, das 9h00 (contagem 1 de agentes em espera) até 17h00 (contagem 0 de agentes em espera).
{
"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"
}
}
Um único daysData item contém um dicionário de tempos e contagens de agentes em espera. Cada "time" : count entrada especifica o número de agentes em espera a agendar a partir da hora especificada, no formato de 24 horas. As entradas consecutivas "time" : count especificam uma sequência de contagens de agentes agendadas para esse dia.
"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
]
As contagens de agentes em espera não são automaticamente redefinidas para zero no final de um dia ou no final da semana. Especificar um item vazio daysData não desativa os agentes em espera para esse dia. Um item vazio daysData significa que não há alterações na programação de contagem do agente em espera para esse dia. Para definir o agente de espera como zero a partir de um período de tempo específico, você deve fornecer explicitamente uma "time" : count entrada com um count de 0.
Exemplos
Para não fazer nenhum ajuste na contagem de agentes em espera especificada na conclusão do dia anterior (ou semana, se você estiver configurando o primeiro período da semana), especifique um daysData item com zero entradas:
{}
Para agendar um único agente em espera para iniciar em 09:00:00 e parar em 17:00:00 (utilizando o fuso horário especificado pela propriedade resourcePredictions), especifique a seguinte configuração:
{
"09:00:00": 1,
"17:00:00": 0
}
Para agendar um único agente em espera a partir da meia-noite até 09:00:00, seguido por 10 agentes em espera até 17:00:00, especifique a seguinte configuração:
{
"00:00:00": 1,
"09:00:00": 10,
"17:00:00": 0
}
Para agendar um agente de prontidão para estar disponível a partir de 09:00:00 no dia especificado e terminando até 17:00:00 no dia seguinte, use dois itens consecutivos daysData.
{
"09:00:00": 1
},
{
"17:00:00": 0
}
Você pode configurar agentes usando o agent-profile parâmetro ao criar ou atualizar um pool.
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
O exemplo a seguir mostra o conteúdo do arquivo agent-profile.json. Você pode especificar o provisionamento manual de agente em espera na secção do parâmetro resourcePredictionsProfileagent-profile. Configure os detalhes na resourcePredictions seção:
{
"Stateless": {},
"resourcePredictionsProfile": {
"Manual": {}
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"00:00:00": 1,
"04:00:00": 0
},
{},
{},
{},
{},
{}
]
}
}
Especifique o fuso horário para seu esquema usando a timeZone propriedade. O valor predefinido é UTC. Para recuperar uma lista de nomes de fuso horário para essa propriedade, consulte Método TimeZoneInfo.GetSystemTimeZones.
A daysData lista define o cronograma para os agentes em espera. A daysData lista pode ter um ou sete itens.
Uma daysData lista com sete itens mapeia os dias da semana, começando pelo domingo. Cada um desses sete itens pode ter zero ou mais "time": count entradas, especificando uma hora no formato de 24 horas e uma contagem de agentes em espera. A contagem especificada de agentes em espera é mantida até a próxima "time": count entrada, que pode ser no mesmo dia ou em um dia seguinte.
Uma daysData lista com um único item define um esquema de todas as semanas, onde a entrada única "time": count corresponde à contagem do agente em espera para toda a semana.
O exemplo a seguir é um esquema de agente de reserva manual. O esquema usa o valor Eastern Standard Time com um único agente provisionado de segunda a sexta-feira, das 9h00 (contagem 1de agentes em espera) até 17h00 (contagem 0de agentes em espera):
{
"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
},
{}
]
}
}
Um único daysData item contém um dicionário de tempos e contagens de agentes em espera. Cada "time" : count entrada especifica o número de agentes em espera a agendar a partir da hora especificada, no formato de 24 horas. As entradas consecutivas "time" : count especificam uma sequência de contagens de agentes agendadas para esse dia.
"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
]
As contagens de agentes em espera não são automaticamente redefinidas para zero no final de um dia ou no final da semana. Especificar um item vazio daysData não desativa os agentes em espera para esse dia. Um item vazio daysData significa que não há alterações na programação de contagem do agente em espera para esse dia. Para definir o agente de espera como zero a partir de um período de tempo específico, você deve fornecer explicitamente uma "time" : count entrada com um count de 0.
Exemplos
Se você não quiser ajustar a contagem de agentes em espera especificada na conclusão do dia anterior (ou semana, se estiver configurando o primeiro período da semana), especifique um daysData item com zero entradas:
{}
Para agendar um único agente em espera para iniciar 09:00:00 e parar em 17:00:00 (usando o fuso horário que você especifica na propriedade resourcePredictions), especifique a configuração seguinte:
{
"09:00:00": 1,
"17:00:00": 0
}
Para agendar um único agente em espera a partir da meia-noite até 09:00:00, seguido por 10 agentes em espera até 17:00:00, especifique a seguinte configuração:
{
"00:00:00": 1,
"09:00:00": 10,
"17:00:00": 0
}
Para agendar que um agente em espera esteja disponível a 09:00:00 partir do dia especificado e parando no 17:00:00 dia seguinte, use dois itens consecutivos daysData :
{
"09:00:00": 1
},
{
"17:00:00": 0
}
Você pode especificar o provisionamento manual do agente em espera na seção resourcePredictionsProfile do agentProfile. Você pode configurar os detalhes na resourcePredictions seção:
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
}
{}
{}
{}
{}
{}
]
}
}
}
}
Especifique o fuso horário desejado para seu esquema usando a timeZone propriedade. O valor predefinido é UTC. Para recuperar uma lista de nomes de fuso horário para essa propriedade, consulte Método TimeZoneInfo.GetSystemTimeZones.
A daysData lista define o cronograma para os agentes de reserva. A daysData lista pode ter um ou sete itens.
Uma daysData lista com sete itens mapeia os dias da semana, começando pelo domingo. Cada um desses sete itens pode ter zero ou mais 'time': count entradas, especificando uma hora no formato de 24 horas e uma contagem de agentes em espera. A contagem especificada de agentes em espera é mantida até a próxima 'time': count entrada, que pode ser no mesmo dia ou em um dia seguinte.
Uma daysData lista com um único item define um esquema semanal, onde a entrada única 'time': count corresponde à contagem de agentes de reserva para toda a semana.
O exemplo a seguir é um esquema de agente em espera manual que usa o valor Eastern Standard Time, com um único agente provisionado de segunda a sexta-feira, das 9h00 (contagem 1de agentes em espera) até 17h00 (contagem 0de agentes em espera):
{
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'
}
}
Um único daysData item contém um dicionário de tempos e contagens de agentes em espera. Cada 'time' : count entrada especifica o número de agentes em espera a agendar a partir da hora especificada, no formato de 24 horas. As entradas consecutivas 'time' : count especificam uma sequência de contagens de agentes agendadas para esse dia.
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
]
As contagens de agentes em espera não são automaticamente redefinidas para zero no final de um dia ou no final da semana, e especificar um item vazio daysData não desativa os agentes em espera para esse dia. Um item vazio daysData significa que não há alterações na programação de contagem do agente em espera para esse dia. Para definir o agente de espera como zero a partir de um período de tempo específico, você deve fornecer explicitamente uma "time" : count entrada com um count de 0.
Exemplos
Para não fazer nenhum ajuste na contagem de agentes em espera especificada na conclusão do dia anterior (ou semana, se você estiver configurando o primeiro período da semana), especifique um daysData item com zero entradas:
{}
Para marcar um único agente de reserva para iniciar em 09:00:00 e parar em 17:00:00 (usando o fuso horário especificado na propriedade resourcePredictions), especifique a seguinte configuração:
{
'09:00:00': 1
'17:00:00': 0
}
Para agendar um único agente em espera a partir da meia-noite até 09:00:00, seguido por 10 agentes em espera até 17:00:00, especifique a seguinte configuração:
{
'00:00:00': 1
'09:00:00': 10
'17:00:00': 0
}
Para agendar a disponibilidade de um agente em espera a partir de 09:00:00 no dia especificado e até 17:00:00 no dia seguinte, utilize dois itens daysData consecutivos:
{
'09:00:00': 1
}
{
'17:00:00': 0
}
Começar do zero
Se você optar por começar do zero, poderá adicionar uma lista de períodos de provisionamento como seu esquema de provisionamento. Cada período de provisionamento consiste em um dia de início, dia de término, fuso horário, hora de início, hora de término e contagem. Os períodos de provisionamento não podem se sobrepor.
| Propriedade |
Descrição |
|
Multi-Dia |
Ao selecionar essa opção, você pode configurar o Dia de Início e o Dia de Término para seu esquema de provisionamento. |
|
Até ao próximo período |
Quando você seleciona essa opção, o período de provisionamento é executado a partir do valor Hora de Início até o início do próximo período de provisionamento. |
|
Dia de Início |
O dia em que o período de provisionamento começa. |
|
Dia de Fim |
O dia em que termina o período de provisionamento. Obrigatório se Multi-Day estiver selecionado. |
|
Hora de Início |
A hora em que o período de provisionamento começa. |
|
Hora de Fim |
O momento em que o período de provisionamento termina. Obrigatório, a menos que Até o próximo período seja selecionado. |
|
Contagem |
O número de agentes em espera a provisionar. Esse número deve ser maior que zero e não deve ser maior do que o valor máximo de agentes nas configurações do pool. |
Depois de criar um período de provisionamento, você pode excluir ou editar o período da lista Esquema de pré-provisionamento .
O exemplo a seguir mostra como configurar um esquema manual com um agente provisionado nas manhãs de segunda-feira, das 12h00 às 5h00 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
}
{}
{}
{}
{}
{}
]
}
}
}
}
Esquema de dias úteis
Se você selecionar o esquema de dias da semana, poderá especificar uma hora de início e uma hora de término, entre as quais o número especificado de agentes em espera está em espera a cada dia da semana.
| Propriedade |
Descrição |
|
Hora de Início |
A hora em que o período de provisionamento começa. |
|
Hora de Fim |
O momento em que o período de provisionamento termina. |
|
Contagem de provisionamento |
O número de agentes em espera a provisionar. Esse número deve ser maior que zero e não deve ser maior do que o valor Máximo de agentes configurado nas configurações do Pool. |
O exemplo a seguir configura quatro agentes para serem usados durante o horário de trabalho e nenhum agente durante o horário de folga e fins de semana, usando o horário do leste (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
}
{}
]
}
}
}
}
Regime semanal completo
Se você escolher o esquema de todas as semanas, poderá especificar o número de agentes que deseja disponibilizar o tempo todo.
{
"$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
}
]
}
}
}
}
Automático
Se você não conhece seus padrões de uso e deseja confiar na previsão automática com base em dados anteriores, selecione Automático. Você pode equilibrar o custo e o desempenho do agente usando um controle deslizante com as cinco opções a seguir. Os Pools de DevOps Gerenciados executam uma consulta nas últimas três semanas de dados históricos (se disponíveis). Ele organiza sessões em fila do pool em períodos de cinco minutos e atribui o percentil especificado (para evitar picos) a cada hora.
-
Mais rentável (
MostCostEffective): percentil 10.
-
Mais rentável (
MoreCostEffective): percentil 25.
-
Equilibrado (padrão) (
Balanced): Percentil 50.
-
Mais desempenho (
MorePerformance): 75.º percentil.
-
Melhor desempenho (
BestPerformance): percentil 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'
}
}
}
}
Ciclo de vida dos agentes e potenciais atrasos na alocação
Quando habilitas agentes de standby usando um esquema sem estado, precisas instalar e configurar o agente do Azure Pipelines antes de transitar do estado pronto para o estado alocado e executar uma pipeline.
Quando os Pools de DevOps Geridos provisionam novos agentes, eles tentam baixar o agente mais recente do Azure Pipelines para que já esteja pré-carregado nos agentes em espera antes que façam a transição para o estado de pronto. A inicialização, a conexão e o início do trabalho podem levar de 10 segundos a um minuto, dependendo da velocidade de SKU do pool, da imagem usada e da carga da rede. Além disso, quando você especifica determinadas configurações em um trabalho de pipeline, isso pode causar um novo download e execução de um agente diferente. Regressões e reversões do agente também podem causar um novo download do agente.
Os agentes prontos sempre têm um atraso potencial porque os Pools de DevOps Gerenciados usam esse agente de maneira "efêmera", o que significa que iniciamos e executamos o agente de tarefas uma vez por trabalho. Se observar atrasos nos agentes prontos a executar tarefas do Azure DevOps, considere as seguintes questões:
- Você tem agentes prontos? O problema mais comum é um mal-entendido sobre quando os agentes devem ser pré-provisionados. As máquinas devem ser iniciadas do zero quando forem satisfeitas as seguintes condições:
- O número de trabalhos enfileirados é maior do que o número de agentes em espera num conjunto.
- Os trabalhos são enfileirados fora do cronograma de pré-provisionamento.
- A contagem de agentes em espera está definida para estar vazia.
- Você está configurando corretamente agentes em espera que têm várias imagens? Se você não estiver especificando qual imagem usar em seu pipeline usando a demanda ImageOverride , os trabalhos terão como destino a primeira imagem. Dependendo das configurações de dimensionamento, você pode não ter tantos agentes disponíveis quanto o esperado, porque alguns são alocados para outras imagens.
- Está a utilizar a demanda
ImageVersionOverride nos seus pipelines? Quando você usa a ImageVersionOverride demanda para especificar uma versão de imagem diferente da configurada nas configurações do pool, cada agente inicia sob demanda usando a versão de imagem especificada. Os agentes em espera são provisionados usando as versões de imagem especificadas na configuração do pool. Se usar ImageVersionOverride, qualquer agente de espera não corresponderá a essa versão e um novo agente será iniciado.
- As configurações de proxy, rede virtual ou firewall estão atrasando seu pool? A lentidão potencial de qualquer configuração de rede resulta em agentes demorando mais para iniciar o agente e conectá-lo ao Azure DevOps.
- Você está substituindo a versão do agente? Por padrão, os Pools de DevOps Gerenciados são executados na versão mais recente do agente de tarefas do Azure DevOps. As configurações no pipeline YAML (como a
Agent.Version demanda) e as configurações da organização do Azure DevOps podem forçar os pipelines a usar versões mais antigas do agente de tarefa, o que requer um novo download depois que uma máquina é alocada.
Conteúdo relacionado