È possibile gestire le prestazioni e i costi dell'istanza di Pool DevOps gestiti configurando le impostazioni di ridimensionamento. Per informazioni sui prezzi e sulle prestazioni, vedere Gestire i costi e le prestazioni.
Stato dell'agente
È possibile configurare i pool come:
-
Senza stato: Offrire un Nuovo Agente per ogni incarico.
-
Stateful: consente la condivisione di agenti tra più incarichi.
L'impostazione predefinita per un pool è stateless, che è possibile ottenere usando il settaggio Fresh agent every time. In alcuni casi, i team potrebbero voler riutilizzare gli agenti per riutilizzare i pacchetti o i file creati durante l'esecuzione della pipeline precedente. Il carico di lavoro di compilazione è uno scenario comune in cui i team vogliono mantenere lo stato e riutilizzare gli agenti. È possibile ottenere pool con stato tramite pool DevOps gestiti, bilanciandoli con le procedure consigliate per la sicurezza. Un agente può essere riutilizzato per un massimo di sette giorni per impostazione predefinita, ma è possibile configurarlo per essere riciclato prima.
Nota
Gli agenti di sicurezza consigliano agli utenti di usare pool stateless come difesa dagli attacchi alla catena di approvvigionamento. Usare l'impostazione dello stato dell'agente Fresh agent ogni volta.
Pool senza stato
Quando si configura un agente senza stato, viene fornito un nuovo agente per ogni lavoro. L'agente viene rimosso al termine dell'operazione.
Per altre informazioni sul ciclo di vita degli agenti senza stato e sul modo in cui vengono usati in Azure Pipelines, vedere la sezione Ciclo di vita degli agenti e potenziali ritardi nell'allocazione .
È possibile configurare gli agenti usando la agentProfile proprietà nella risorsa Pool DevOps gestiti. Nell'esempio seguente viene specificato un 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"
}
}
}
]
}
È possibile configurare gli agenti usando il agent-profile parametro quando si crea o si aggiorna un pool.
Nell'esempio seguente viene specificato un Stateless agente senza agenti di riserva.
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
Nell'esempio seguente viene illustrato il contenuto del file agent-profile.json .
{
"Stateless": {}
}
È possibile configurare gli agent usando la proprietà agentProfile nella risorsa pool DevOps gestita. Nell'esempio seguente viene specificato un Stateless agente.
resource managedDevOpsPools 'Microsoft.DevOpsInfrastructure/pools@2025-09-20' = {
name: 'fabrikam-managed-pool'
location: 'eastus'
properties: {
...
agentProfile: {
kind: 'Stateless'
}
}
}
Quando si imposta Stato dell'agente su Nuovo agente ogni volta, viene procurato un nuovo agente per ogni processo. L'agente viene eliminato al termine dell'attività.
Pool con stato
{
"$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"
}
}
}
]
}
È possibile configurare gli agenti usando il agent-profile parametro quando si crea o si aggiorna un pool.
Nell'esempio seguente viene specificato un Stateful agente con una durata massima di sette giorni e un periodo di tolleranza di trenta minuti.
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
Nell'esempio seguente viene illustrato il contenuto del agent-profile.json file.
{
"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 si abilita Lo stesso agente può essere utilizzato da più compilazioni (l'impostazione nei modelli di risorse o l'impostazione "kind": "stateful" nell'interfaccia della riga di comando { "stateful": {...} } di Azure), gli agenti nel pool sono a stato persistente. È possibile configurare pool con stato usando le impostazioni seguenti:
Durata massima di vita per gli agenti di standby (maxAgentLifetime) configura la durata massima per cui un agente in un pool con stato mantenuto può funzionare prima che venga terminato e rimosso. Il formato di durata massima per gli agenti di standby è dd.hh:mm:ss. Il valore predefinito Max time to live for standby agents è impostato sulla durata massima consentita di sette giorni (7.00:00:00).
Periodo di grazia (gracePeriodTimeSpan) configura il tempo che un agente in un pool stateful attende nuovi lavori prima dell'arresto, dopo che tutti i lavori correnti e in coda sono stati completati. Il formato del periodo di tolleranza è dd.hh:mm:ss e il valore predefinito non è un periodo di tolleranza.
Importante
Se un’attività è in esecuzione quando scade l'intervallo massimo di tempo per gli agenti di standby, l'agente non si arresterà fino al termine dell'attività, a meno che l'attività richieda più di due giorni per essere completata. I processi individuali nei pool gestiti di DevOps possono essere eseguiti per un massimo di due giorni, anche se sono in esecuzione su un agente di standby con più di due giorni configurati come tempo massimo di vita per gli agenti di standby. Contattare il supporto tecnico se il flusso di lavoro richiede il completamento di un singolo processo che richiede più di due giorni.
Gli agenti nei pool senza stato vengono terminati e eliminati dopo ogni attività. Gli agenti nei pool con stato continuano a essere in esecuzione se vengono soddisfatte una delle condizioni seguenti:
- Se un altro processo viene accodato al termine del primo processo, i pool di DevOps gestiti inviano il processo in coda all'agente che ha eseguito il primo processo anziché arrestarlo.
- Se è stato configurato un periodo di tolleranza per il pool, gli agenti attendono le nuove attività per la durata specificata dal periodo di tolleranza prima di spegnersi.
- Se gli agenti di standby sono abilitati e l'immagine dell'agente soddisfa i criteri del periodo di provisioning attivo, l'agente continua a essere eseguito e attende i processi.
Gli agenti in esecuzione nei pool con stato vengono arrestati ed eliminati se vengono eseguiti continuamente per la durata specificata da Tempo massimo di vita per gli agenti standby, anche se le condizioni precedenti sono vere. Ad esempio, se il tempo massimo di vita per gli agenti di standby è configurato per tre giorni e la modalità agente standby è impostata su Manuale, Schema settimanale (computer disponibili 24/7), gli agenti vengono riavviati dopo tre giorni consecutivi di attività.
Importante
Gli agenti nei pool con stato possono comunque essere arrestati e rimossi al termine di un processo se non è previsto alcun periodo di tolleranza, nessun periodo di provisioning attivo per gli agenti di standby e nessun processo in coda corrispondente all'agente. Quando un agente viene rimosso, qualsiasi stato viene perso.
I periodi di tolleranza consentono il modo più economico per eseguire pool stateful per le pipeline con carico coerente. I periodi di tolleranza non richiedono l'uso della modalità agente di standby per mantenere gli agenti online e pronti ad accettare compiti.
Modalità agente standby
Quando si crea un pool, la modalità agente standby è disattivata per impostazione predefinita. Quando la modalità agente standby è disattivata, non sono presenti agenti standby da assegnare immediatamente alle pipeline. Le pipeline potrebbero dover attendere da qualche istante a 15 minuti per l'assegnazione su richiesta di un agente. Per prestazioni migliori, abilitare la modalità agente standby e configurare una pianificazione dell'agente di standby che fornisce capacità per il carico di lavoro.
Quando si configura una pianificazione dell'agente di standby, i pool di DevOps gestiti confrontano periodicamente il numero di agenti di cui è stato effettuato il provisioning con il numero di agenti di standby specificato nello schema di provisioning corrente. Avvia nuovi agenti in base alle esigenze per mantenere il numero di agenti di standby. È possibile visualizzare lo stato corrente e il numero degli agenti nel pool usando il riquadro Agenti .
Importante
Il numero di provisioning in uno schema non può essere maggiore del valore Massimo agenti configurato nelle impostazioni pool.
È possibile configurare la modalità agente di standby usando le impostazioni seguenti:
-
Disattivata: la modalità agente standby è disattivata e gli agenti vengono forniti su richiesta quando i processi sono in coda.
-
Manuale: configurare una pianificazione di standby manuale.
-
Automatico: usare una pianificazione di standby automatica in base alla cronologia di utilizzo dell'agente. È possibile configurarlo per i costi e le prestazioni.
È possibile configurare gli agenti di standby usando la resourcePredictionsProfile sezione della agentProfile proprietà . Impostare "kind": "Manual" per configurare un avvio da zero, schema della settimana o schema all-week e specificare i dettagli dello schema nella resourcePredictions sezione . Per configurare gli agenti di standby automatici, impostare "kind": "Automatic". Disabilitare gli agenti di standby omettendo la sezione ResourcePredictionsProfile. Per informazioni dettagliate su come configurare ogni tipo di ridimensionamento, vedere le sezioni seguenti.
{
"$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": {...}
}
}
}
]
}
È possibile configurare gli agenti usando il agent-profile parametro quando si crea o si aggiorna un pool.
È possibile configurare gli agenti di standby usando la resourcePredictionsProfile sezione del agent-profile parametro . Usare l'impostazione "Manual": {} per configurare un inizio da zero, uno schema dei giorni feriali o uno schema per tutta la settimana e specificare i dettagli dello schema nella sezione resourcePredictions. Per configurare gli agenti di standby automatici, usare l'impostazione "Automatic": {} . Per informazioni dettagliate su come configurare ogni tipo di ridimensionamento, vedere le sezioni seguenti.
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
L'esempio seguente mostra il contenuto del agent-profile.json file:
{
"Stateless": {},
"resourcePredictionsProfile": {
"Manual": {}
},
"resourcePredictions": {...}
}
È possibile configurare gli agenti di standby usando la resourcePredictionsProfile sezione della agentProfile proprietà . Usare l'impostazione "kind": "Manual" per configurare una configurazione da zero, uno schema dei giorni feriali o uno schema per tutta la settimana, e specificare i dettagli dello schema nella sezione resourcePredictions. Per configurare gli agenti di standby automatici, usare l'impostazione kind: 'Automatic' . Disabilitare gli agenti di standby omettendo la sezione ResourcePredictionsProfile. Per informazioni dettagliate su come configurare ogni tipo di ridimensionamento, vedere le sezioni seguenti.
resource managedDevOpsPools 'Microsoft.DevOpsInfrastructure/pools@2025-09-20' = {
name: 'fabrikam-managed-pool'
location: 'eastus'
properties: {
...
agentProfile: {
kind: 'Stateless'
resourcePredictionsProfile: {
kind: 'Manual'
}
resourcePredictions: {...}
}
}
}
Manuale
La modalità manuale è ideale per i team che conoscono i modelli di utilizzo di pipeline di integrazione continua e recapito continuo (CI/CD). Quando si usa l'opzione manuale, è necessario definire lo schema di pre-provisioning. È possibile definire il tuo schema in base alla tua comprensione di quali agenti nel pool sono più probabilmente utilizzati e quanti è probabile saranno utilizzati. Specificare un numero di agenti di provisioning che soddisfano la richiesta prevista.
È possibile creare una pianificazione di provisioning personalizzata o scegliere tra una delle pianificazioni predefinite. È possibile configurare il fuso orario da usare per specificare le pianificazioni. Il valore predefinito per Il fuso orario di pre-provisioning è (UTC) Coordinated Universal Time.
È possibile configurare agenti di standby manuali in uno dei tre modi seguenti:
Ciascun avvio rapido per il pre-provisioning include le seguenti impostazioni comuni, oltre alle impostazioni specifiche di ciascun avvio rapido:
-
Pre-configurazione del fuso orario: consente di configurare il fuso orario per i periodi di tempo nel tuo schema di pre-provisioning. Il valore predefinito per Il fuso orario di pre-provisioning è (UTC) Coordinated Universal Time.
-
Percentuale agente standby: configura la percentuale di agenti di standby desiderati per ogni immagine. È possibile immettere
* per assicurarsi che venga eseguito lo stesso provisioning di tutte le immagini oppure è possibile specificare un numero intero compreso tra 0 e 100 per rappresentare una percentuale. Se si specifica una percentuale, il totale per tutte le immagini deve essere uguale a 100. Se si dispone di una singola immagine, specificare * o 100. Quando si usano i modelli di Azure Resource Manager è possibile configurare l'impostazione Percentuale Agente Standby nella sezione images. Per altre informazioni, vedere Configurare le immagini.
È possibile specificare il provisioning manuale dell'agente di standby nella sezione resourcePredictionsProfile di agentProfile. È possibile configurare i dettagli nella resourcePredictions sezione .
{
"$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
},
{},
{},
{},
{},
{}
]
}
}
}
}
]
}
Specificare il fuso orario desiderato per lo schema usando la timeZone proprietà . Il valore predefinito è UTC. Per recuperare un elenco di nomi di fuso orario per questa proprietà, vedere Metodo TimeZoneInfo.GetSystemTimeZones.
È possibile definire la pianificazione per gli agenti di standby usando l'elenco daysData . L'elenco daysData può avere uno o sette elementi.
Un daysData elenco con sette elementi viene mappato ai giorni della settimana, a partire dalla domenica. Ognuno di questi sette elementi può avere zero o più "time": count voci, specificando un'ora in formato 24 ore e un numero di agenti di standby. Il numero specificato di agenti di standby viene mantenuto fino alla voce successiva "time": count, che può essere nello stesso giorno o in un giorno successivo.
Un daysData elenco con un singolo elemento definisce uno schema all-week, in cui la singola "time": count voce corrisponde al numero di agenti di standby per l'intera settimana.
L'esempio seguente è uno schema dell'agente di riserva manuale. Usa il valore Eastern Standard Time con un singolo agente provisionato da lunedì a venerdì, dalle 9:00 (conteggio degli agenti di standby 1) alle 17:00 (conteggio degli agenti di standby 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"
}
}
Un singolo daysData elemento contiene un dizionario di volte e conteggi degli agenti di standby. Ogni "time" : count voce specifica il numero di agenti di standby da pianificare a partire dall'ora specificata, in formato di 24 ore. Le voci consecutive "time" : count specificano una sequenza di conteggi degli agenti pianificati per quel giorno.
"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
]
I conteggi degli agenti di standby non vengono reimpostati automaticamente su zero alla fine di un giorno o alla fine della settimana. Se si specifica un elemento vuoto daysData , gli agenti di standby non vengono disabilitati per quel giorno. Un elemento vuoto daysData indica che non sono state apportate modifiche alla pianificazione del numero di agenti di standby per quel giorno. Per impostare l'agente di standby su zero a partire da un periodo di tempo specifico, è necessario fornire in modo esplicito una "time" : count voce con un count di 0.
Esempi
Per non apportare modifiche al numero di agenti di standby specificato alla conclusione del giorno precedente (o alla settimana se si sta configurando il primo periodo della settimana), specificare un daysData elemento con zero voci:
{}
Per pianificare un agente standby singolo affinché inizi alle 09:00:00 e si fermi alle 17:00:00 (utilizzando il fuso orario specificato dalla proprietà resourcePredictions), specificare la configurazione seguente:
{
"09:00:00": 1,
"17:00:00": 0
}
Per pianificare un singolo agente di standby a partire da mezzanotte a 09:00:00, seguito da 10 agenti di standby fino a 17:00:00, specificare la configurazione seguente:
{
"00:00:00": 1,
"09:00:00": 10,
"17:00:00": 0
}
Per pianificare la disponibilità di un agente di standby a partire da 09:00:00 nel giorno specificato e fermarsi a 17:00:00 il giorno successivo, usare due elementi consecutivi daysData.
{
"09:00:00": 1
},
{
"17:00:00": 0
}
È possibile configurare gli agenti usando il agent-profile parametro quando si crea o si aggiorna un pool.
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
Nell'esempio seguente viene illustrato il contenuto del file agent-profile.json . È possibile specificare il provisioning manuale dell'agente di standby nella resourcePredictionsProfile sezione del agent-profile parametro . Configurare i dettagli nella resourcePredictions sezione:
{
"Stateless": {},
"resourcePredictionsProfile": {
"Manual": {}
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"00:00:00": 1,
"04:00:00": 0
},
{},
{},
{},
{},
{}
]
}
}
Specificare il fuso orario per lo schema usando la timeZone proprietà . Il valore predefinito è UTC. Per recuperare un elenco di nomi di fuso orario per questa proprietà, vedere Metodo TimeZoneInfo.GetSystemTimeZones.
L'elenco daysData definisce la pianificazione per gli agenti di standby. L'elenco daysData può avere uno o sette elementi.
Un daysData elenco con sette elementi viene mappato ai giorni della settimana, a partire dalla domenica. Ognuno di questi sette elementi può avere zero o più "time": count voci di registro, specificando un'ora in formato di 24 ore e un numero di agenti in standby. Il numero specificato di agenti di standby viene mantenuto fino alla voce successiva "time": count , che può essere nello stesso giorno o in un giorno successivo.
Un daysData elenco con un singolo elemento definisce uno schema settimanale, in cui la singola "time": count voce corrisponde al numero di agenti di standby per l'intera settimana.
L'esempio seguente è uno schema dell'agente di standby manuale. Lo schema utilizza il valore Eastern Standard Time con un singolo agente fornito da lunedì a venerdì, dalle 9:00 (conteggio 1 degli agenti di standby) alle 17:00 (conteggio 0 agenti di standby):
{
"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
},
{}
]
}
}
Un singolo daysData elemento contiene un dizionario di volte e conteggi degli agenti di standby. Ogni "time" : count voce specifica il numero di agenti di standby da pianificare a partire dall'ora specificata, in formato a 24 ore. Le voci consecutive "time" : count specificano una sequenza di conteggi degli agenti pianificati per quel giorno.
"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
]
I conteggi degli agenti di standby non vengono reimpostati automaticamente su zero alla fine di un giorno o alla fine della settimana. Se si specifica un elemento vuoto daysData , gli agenti di standby non vengono disabilitati per quel giorno. Un elemento vuoto daysData indica che non sono state apportate modifiche alla pianificazione del numero di agenti di standby per quel giorno. Per impostare l'agente di standby su zero a partire da un periodo di tempo specifico, è necessario fornire in modo esplicito una "time" : count voce con un count di 0.
Esempi
Se non si desidera modificare il numero specificato di agenti di standby alla conclusione del giorno precedente (o della settimana se si sta configurando il primo periodo della settimana), specificare un elemento daysData con zero voci:
{}
Per pianificare l'avvio 09:00:00 e l'arresto 17:00:00 di un singolo agente di standby (usando il fuso orario specificato nella resourcePredictions proprietà), specificare la configurazione seguente:
{
"09:00:00": 1,
"17:00:00": 0
}
Per pianificare un singolo agente di standby a partire da mezzanotte a 09:00:00, seguito da 10 agenti di standby fino a 17:00:00, specificare la configurazione seguente:
{
"00:00:00": 1,
"09:00:00": 10,
"17:00:00": 0
}
Per pianificare la disponibilità di un agente di standby a partire dal 09:00:00 nel giorno specificato e fino al 17:00:00 del giorno successivo, usare due elementi consecutivi daysData:
{
"09:00:00": 1
},
{
"17:00:00": 0
}
È possibile specificare il provisionamento manuale dell'agente di standby nella sezione resourcePredictionsProfile di agentProfile. È possibile configurare i dettagli nella resourcePredictions sezione:
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
}
{}
{}
{}
{}
{}
]
}
}
}
}
Specificare il fuso orario desiderato per lo schema usando la timeZone proprietà . Il valore predefinito è UTC. Per recuperare un elenco di nomi di fuso orario per questa proprietà, vedere Metodo TimeZoneInfo.GetSystemTimeZones.
L'elenco daysData definisce la pianificazione per gli agenti di standby. L'elenco daysData può avere uno o sette elementi.
Un daysData elenco con sette elementi viene mappato ai giorni della settimana, a partire dalla domenica. Ognuno di questi sette elementi può avere zero o più 'time': count voci, specificando un'ora in formato 24 ore e un numero di agenti di standby. Il numero specificato di agenti in standby viene mantenuto fino alla voce successiva 'time': count, che può essere nello stesso giorno o il giorno successivo.
Un daysData elenco con un singolo elemento definisce uno schema settimanale, in cui la singola 'time': count voce corrisponde al numero di agenti in standby per l'intera settimana.
L'esempio seguente è uno schema manuale per l'agente di standby che usa il valore Eastern Standard Time, con un singolo agente configurato da lunedì a venerdì, dalle 9:00 (numero di 1 agenti di standby) alle 17:00 (conteggio di 0 agenti di standby):
{
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'
}
}
Un singolo daysData elemento contiene un dizionario di volte e conteggi degli agenti di standby. Ogni 'time' : count voce specifica il numero di agenti di standby da pianificare a partire dall'orario specificato, in formato di 24 ore. Le voci consecutive 'time' : count specificano una sequenza di conteggi degli agenti pianificati per quel giorno.
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
]
I conteggi degli agenti di standby non vengono automaticamente azzerati alla fine del giorno o della settimana e la specifica di un elemento vuoto daysData non azzera gli agenti di standby per quel giorno. Un elemento vuoto daysData indica che non sono state apportate modifiche alla pianificazione del numero di agenti di standby per quel giorno. Per impostare l'agente di standby su zero a partire da un periodo di tempo specifico, è necessario fornire in modo esplicito una "time" : count voce con un count di 0.
Esempi
Per non apportare modifiche al numero di agenti di standby specificato alla conclusione del giorno precedente (o alla settimana se si sta configurando il primo periodo della settimana), specificare un daysData elemento con zero voci:
{}
Per pianificare l'avvio 09:00:00 e l'arresto 17:00:00 di un singolo agente di standby (usando il fuso orario specificato nella resourcePredictions proprietà), specificare la configurazione seguente:
{
'09:00:00': 1
'17:00:00': 0
}
Per pianificare un singolo agente di standby a partire da mezzanotte a 09:00:00, seguito da 10 agenti di standby fino a 17:00:00, specificare la configurazione seguente:
{
'00:00:00': 1
'09:00:00': 10
'17:00:00': 0
}
Per programmare la disponibilità di un agente di riserva a partire dalle 09:00:00 del giorno specificato e fino al giorno successivo alle 17:00:00, usare due elementi consecutivi daysData:
{
'09:00:00': 1
}
{
'17:00:00': 0
}
Iniziare da zero
Se si sceglie di iniziare da zero, è possibile aggiungere un elenco di periodi di approvvigionamento come schema di approvvigionamento. Ogni periodo di provisioning è costituito da un giorno di inizio, un giorno di fine, una zona oraria, un'ora di inizio, un'ora di fine e un conteggio. I periodi di provisioning non possono sovrapporsi tra loro.
| Proprietà |
Descrizione |
|
Multi-Day |
Quando si seleziona questa opzione, è possibile configurare sia Il giorno di inizio che il giorno di fine per lo schema di provisioning. |
|
Fino al periodo successivo |
Quando si seleziona questa opzione, il periodo di provisioning va dall'Ora di Inizio fino all'inizio del periodo di provisioning successivo. |
|
Giorno di inizio |
Giorno in cui inizia il periodo di provisioning. |
|
Fine della giornata |
Giorno in cui termina il periodo di approvvigionamento. Obbligatorio se è selezionata l'opzione Multi-Day . |
|
Ora di inizio |
L'ora in cui inizia il periodo di provisioning. |
|
Ora di fine |
Momento di fine del periodo di provisioning. Obbligatorio a meno che non venga selezionato Fino al periodo successivo . |
|
Conto |
Numero di agenti di standby di cui effettuare il provisioning. Questo numero deve essere maggiore di zero e non deve essere maggiore del valore Massimo agenti nelle impostazioni pool. |
Dopo aver creato un periodo di provisioning, è possibile eliminare o modificare il periodo dall'elenco Schema di preprovvista.
L'esempio seguente illustra come configurare uno schema manuale con un agente di cui è stato effettuato il provisioning il lunedì mattina dalle 12:00 alle 5: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
}
{}
{}
{}
{}
{}
]
}
}
}
}
Schema giorno feriale
Se si seleziona il piano feriale, è possibile specificare un'ora di inizio e un'ora di fine, tra i quali il numero specificato di agenti di emergenza è in servizio per ciascun giorno feriale.
| Proprietà |
Descrizione |
|
Ora di inizio |
L'ora in cui inizia il periodo di provisioning. |
|
Ora di fine |
Momento di fine del periodo di provisioning. |
|
Numero di provisioning |
Numero di agenti di standby di cui effettuare il provisioning. Questo numero deve essere maggiore di zero e non deve essere maggiore del valore Massimo agenti configurato nelle impostazioni pool. |
Nell'esempio seguente vengono configurati quattro agenti da usare durante l'orario di lavoro e nessun agente durante le ore lavorative e i fine settimana, usando l'ora orientale (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 settimanale
Se si sceglie il piano settimanale completo, è possibile specificare il numero di agenti che si desidera avere sempre disponibili.
{
"$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
}
]
}
}
}
}
Automatico
Se non si conoscono i modelli di utilizzo e si vuole basarsi sulla previsione automatica basata sui dati precedenti, selezionare Automatico. È possibile bilanciare le prestazioni dei costi e degli agenti usando un dispositivo di scorrimento con le cinque opzioni seguenti. I Pool DevOps Gestiti eseguono una query sui dati storici delle ultime tre settimane (se disponibili). Organizza le sessioni in attesa del pool in intervalli di cinque minuti e assegna il percentile specificato (per evitare picchi) ad ogni ora.
-
Più conveniente dal punto di vista del costo (
MostCostEffective): 10° percentile.
-
Più conveniente (
MoreCostEffective): 25° percentile.
-
Bilanciato (impostazione predefinita):
Balanced 50° percentile.
-
Maggiore prestazioni (
MorePerformance): 75° percentile.
-
Prestazioni migliori (
BestPerformance): 90° percentile.
{
"$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 di vita degli agenti e potenziali ritardi nell'allocazione
Quando si abilitano gli agenti di standby usando uno schema senza stato , è necessario installare e configurare l'agente di Azure Pipelines prima di passare dallo stato pronto allo stato allocato ed eseguire una pipeline.
Quando i pool di DevOps gestiti effettuano il provisioning di nuovi agenti, tenta di scaricare l'agente Azure Pipelines più recente in modo che sia già scaricato negli agenti di standby prima che passino allo stato pronto. L'avvio, la connessione e l'inizio del processo possono richiedere da 10 secondi a un minuto a seconda della velocità dello SKU del pool, dell'immagine usata e del carico di rete. Inoltre, quando si specificano determinate impostazioni in un processo della pipeline, può causare un nuovo download e l'esecuzione di un agente diverso. Le regressioni e i rollback dell'agente possono anche causare un nuovo scaricamento dell'agente.
Agenti disponibili hanno sempre un potenziale ritardo perché i Managed DevOps Pools usano questo agente in modo "effimero", il che significa che l'agente di attività viene avviato ed eseguito una volta per ogni lavoro. Se si riscontrano ritardi nel momento in cui gli agenti pronti acquisiscono lavori da Azure DevOps, considerare le seguenti domande:
- Hai degli agenti pronti? Il problema più comune è un malinteso quando è necessario effettuare il pre-provisioning degli agenti. I computer devono essere attivati da zero quando vengono soddisfatte le condizioni seguenti:
- Il numero di processi in coda è maggiore del numero di agenti in standby all'interno di un pool.
- I processi vengono accodati fuori dalla pianificazione del pre-provisioning.
- Il numero di agenti di standby è impostato a zero.
- Stai configurando correttamente gli agenti standby che hanno più immagini? Se non si specifica quale immagine usare nella pipeline usando la richiesta ImageOverride , i processi hanno come destinazione la prima immagine. A seconda delle impostazioni di ridimensionamento, è possibile che non siano disponibili tutti gli agenti previsti, perché alcuni vengono allocati ad altre immagini.
- Stai usando la
ImageVersionOverride richiesta nelle pipeline? Quando si usa la ImageVersionOverride richiesta per specificare una versione dell'immagine diversa da quella configurata nelle impostazioni del pool, ogni agente viene avviato su richiesta usando la versione dell'immagine specificata. Il provisioning degli agenti di riserva viene eseguito usando le versioni dell'immagine specificate nella configurazione del pool. Se usi ImageVersionOverride, gli agenti standby non saranno compatibili con quella versione e verrà avviato un nuovo agente.
- Le impostazioni del proxy, della rete virtuale o del firewall rallentano il pool? Il potenziale rallentamento derivante dalle impostazioni di rete può comportare un tempo maggiore per l'avvio dell'agente e la sua connessione ad Azure DevOps.
- Si esegue l'override della versione dell'agente? Per impostazione predefinita, i pool di DevOps gestiti vengono eseguiti nella versione più recente dell'agente attività di Azure DevOps. Le impostazioni nella pipeline YAML (ad esempio la
Agent.Version domanda) e le impostazioni dell'organizzazione di Azure DevOps possono forzare le pipeline a usare le versioni precedenti dell'agente di processo, che richiede il riscaricamento una volta allocato il computer.
Contenuti correlati