Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Configurare le impostazioni di ridimensionamento per gestire le prestazioni e i costi del pool DevOps gestito. Per informazioni sui prezzi e sulle prestazioni, vedere Gestire i costi e le prestazioni.
Stato dell'agente
I pool DevOps gestiti possono essere configurati come senza stato o con stato.
- Pool senza stato: fornire un nuovo agente per ogni processo.
- Pool con stato: consente la condivisione di agenti tra più processi.
L'impostazione predefinita per un pool devOps gestito è senza stato (agente aggiornato ogni volta), ma 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. Per impostazione predefinita, un agente può essere riutilizzato per un massimo di 7 giorni, ma è possibile configurarlo per essere riciclato prima.
Nota
I pool senza stato o l'uso dello stato dell'agente impostano Fresh agent ogni volta che sono consigliati dagli esperti di sicurezza come difesa dagli attacchi della supply chain.
Pool senza stato
Quando viene configurato un agente senza stato, viene acquistato un nuovo agente per ogni processo e viene rimosso al termine del processo.
Per il ciclo di vita degli agenti senza stato e una spiegazione su come vengono usati nelle pipeline di Azure DevOps (inclusi i potenziali ritardi nell'allocazione), vedere la sezione Ciclo di vita degli agenti e potenziali ritardi nell'allocazione .
Quando lo stato dell'agente è impostato su Fresh Agent ogni volta, viene acquistato un nuovo agente per ogni processo e viene rimosso al termine del processo.
Pool con stato
Quando lo stesso agente può essere usato da più compilazioni ("kind": "stateful"
nei modelli di risorse o { "stateful": {...} }
nell'interfaccia della riga di comando di Azure) è abilitato, gli agenti nel pool vengono considerati con stato. I pool con stato vengono configurati usando le impostazioni seguenti.
Il tempo massimo di esecuzione per gli agenti di standby (
maxAgentLifetime
) configura la durata massima che un agente in un pool con stato può essere eseguito prima che venga arrestato 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
).Importante
Se un processo è in esecuzione quando scade l'intervallo tempo massimo di vita per gli agenti di standby, l'agente non verrà arrestato fino al completamento del processo, a meno che il processo non richieda più di due giorni per essere completato. I singoli processi nei pool di DevOps gestiti 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 per il tempo massimo di vita degli 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.
Periodo di tolleranza (
gracePeriodTimeSpan
) configura la quantità di tempo per cui un agente in un pool con stato attende i nuovi processi prima dell'arresto dopo il completamento di tutti i processi correnti e in coda. Il formato del periodo di tolleranza èdd.hh:mm:ss
e il valore predefinito non è un periodo di tolleranza.
Mentre gli agenti nei pool senza stato vengono arrestati e rimossi dopo ogni processo, gli agenti nei pool con stato continuano a essere in esecuzione se vengono soddisfatte una delle condizioni seguenti.
- Se è presente un altro processo in coda al completamento del primo processo, i pool di DevOps gestiti inviano tale processo all'agente che ha eseguito il primo processo invece di arrestarlo.
- Se è configurato un periodo di tolleranza per il pool, gli agenti attendono i nuovi processi per la durata specificata dal periodo di tolleranza prima dell'arresto.
- 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 e rimossi se vengono eseguiti continuamente per la durata specificata da Max time to live per gli agenti di standby, anche se le condizioni precedenti sono vere. Se, ad esempio, la durata massima per gli agenti di standby è configurata per tre giorni e la modalità agente standby è impostata su Manuale, Schema di tutte le settimane (computer disponibili 24/7), gli agenti vengono riavviati dopo tre giorni di tempo di attività continui.
Importante
Gli agenti nei pool con stato possono comunque essere arrestati e rimossi dopo il completamento di un processo se non è presente alcun periodo di tolleranza, nessun periodo di provisioning attivo per gli agenti di standby e nessun processo in coda corrispondente all'agente. Una volta rimosso un agente, qualsiasi stato viene perso.
Il periodo di tolleranza consente il modo più conveniente per eseguire pool con stato per le pipeline con carico coerente e non richiede l'uso della modalità agente standby per mantenere online gli agenti e pronti ad accettare processi.
Modalità agente standby
Quando si crea un pool, la modalità agente standby è disattivata per impostazione predefinita e non sono presenti agenti di standby da assegnare immediatamente alle pipeline, che potrebbero dover attendere alcuni istanti, fino a 15 minuti, affinché venga effettuato il provisioning di un agente su richiesta. 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 viene configurata una pianificazione dell'agente di standby, i pool DevOps gestiti confrontano periodicamente il numero di agenti di cui è stato effettuato il provisioning con il numero di agenti di standby specificato dallo schema di provisioning corrente e avviano nuovi agenti secondo necessità per mantenere il numero previsto 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 degli agenti massimi configurati nelle impostazioni pool.
La modalità agente standby viene configurata usando le impostazioni seguenti:
- Disattivata : la modalità agente standby è disattivata e gli agenti vengono sottoposte a provisioning su richiesta quando i processi vengono accodati.
- Manuale : configurare una pianificazione di standby manuale.
- Automatico : usare una pianificazione di standby automatica in base alla cronologia di utilizzo dell'agente e configurabile per i costi e le prestazioni.
Manuale
La modalità manuale è più adatta per i team che hanno familiarità con i modelli di utilizzo delle pipeline CI/CD. Se si seleziona l'opzione manuale, è necessario definire lo schema di pre-provisioning in base alla comprensione dell'uso degli agenti nel pool e del numero di agenti che potrebbero essere usati e specificare un conteggio di provisioning degli agenti che soddisfano la richiesta prevista.
È possibile creare una pianificazione di provisioning personalizzata o scegliere tra una delle pianificazioni predefinite ed è 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.
La configurazione manuale dell'agente standby può essere configurata in uno dei tre modi seguenti.
- Iniziare da zero - Configurare un set di periodi di provisioning per gli agenti di standby
- Schema giorno feriale (computer disponibili durante il periodo di tempo ogni giorno feriale) - Configurare un'ora di inizio e di fine per gli agenti di standby per essere disponibili ogni giorno feriale
- Tutti gli schemi settimanali (computer disponibili 24/7) - Configurare un numero fisso di agenti di standby in modo che siano disponibili continuamente
Ognuna delle guide introduttive di pre-provisioning include le impostazioni comuni seguenti, oltre alle impostazioni specifiche per tale avvio rapido.
- Il pre-provisioning timeZone consente di configurare il fuso orario per gli orari nello 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. La percentuale dell'agente di standby viene configurata nellaimages
sezione quando si usano i modelli di Resource Manager. Per altre informazioni, vedere Configurare le immagini.
Inizia da zero
Se si sceglie di iniziare da zero, è possibile aggiungere un elenco di periodi di provisioning da usare come schema di provisioning. Ogni periodo di provisioning è costituito da un giorno di inizio, un giorno di fine, un fuso orario, un'ora di inizio, un'ora di fine e un conteggio. I periodi di provisioning non possono sovrapporsi tra loro.
Proprietà | Descrizione |
---|---|
Più giorni | Quando selezionata, è possibile configurare sia un giorno di inizio che un giorno di fine per lo schema di provisioning. |
Fino al periodo successivo | Quando selezionato, il periodo di provisioning viene eseguito dall'ora di inizio fino all'inizio del periodo di provisioning successivo. |
Giorno di inizio | Giorno in cui inizia il periodo di provisioning. |
Fine giorno | Giorno in cui termina il periodo di provisioning. Obbligatorio se è selezionata l'opzione Multi-Day. |
Ora di avvio | Ora di inizio del periodo di provisioning. |
Ora di fine | Ora di fine del periodo di provisioning. Obbligatorio a meno che non venga controllato fino al periodo successivo. |
Conteggio | 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. |
Dopo aver creato un periodo di provisioning, è possibile eliminare o modificare il periodo dall'elenco Schema di pre-provisioning.
L'esempio seguente configura uno schema manuale con 1 agente di cui è stato effettuato il provisioning il lunedì mattina dalle 12:00 alle 5:00 EST.
Schema giorno feriale
Se si sceglie lo schema della settimana, è possibile specificare un'ora di inizio e un'ora di fine in cui il numero specificato di agenti di standby sarà in standby ogni giorno feriale.
Proprietà | Descrizione |
---|---|
Ora di avvio | Ora di inizio del periodo di provisioning. |
Ora di fine | Ora di fine del periodo di provisioning. |
Conteggio 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 utilizzare durante l'orario di lavoro con 0 agenti durante le ore non lavorative e i fine settimana, usando l'ora solare orientale.
Tutti gli schemi settimanali
Se si sceglie lo schema di tutte le settimane, è possibile specificare un numero di agenti che si desiderano disponibili 24/7.
Automatico
Se non si conoscono i modelli di utilizzo e si vuole basarsi sulla previsione automatica basata sui dati passati, scegliere Automatico. È possibile bilanciare i costi e le prestazioni dell'agente usando un dispositivo di scorrimento con le cinque opzioni seguenti. I pool DevOps gestiti eseguono una query nelle ultime tre settimane di dati cronologici (se disponibili), organizzando le sessioni in coda del pool in cinque minuti e assegnando il percentile specificato (per evitare picchi) a ogni ora.
-
Più conveniente (
MostCostEffective
) - 10° percentile -
Più conveniente (
MoreCostEffective
) - 25° percentile -
Bilanciato (impostazione predefinita) -
Balanced
50° percentile -
Prestazioni maggiori (
MorePerformance
) - 75° percentile -
Prestazioni migliori (
BestPerformance
) - 90° percentile
Ciclo di vita degli agenti e potenziali ritardi nell'allocazione
Gli agenti standby che usano uno schema senza stato richiedono l'installazione e la configurazione dell'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 per poterlo scaricare negli agenti di standby prima di passare 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, dell'immagine usata e del carico di rete del pool. Inoltre, alcune impostazioni in un processo della pipeline possono causare un nuovo download e l'esecuzione di un agente diverso, mentre le regressioni e i rollback dell'agente possono anche causare un nuovo download dell'agente. Gli agenti pronti avranno sempre un potenziale ritardo, poiché i pool di DevOps gestiti usano questo agente in modo "effimero", ovvero si avvia ed esegue l'agente delle attività una volta per ogni lavoro.
Se si verificano ritardi negli agenti che acquisiscono incarichi da Azure DevOps, è importante da considerare quanto segue:
- Hai degli agenti pronti? - Il problema più comune è un malinteso quando gli agenti devono essere preprovisionati. Quando il numero di processi in coda è maggiore del numero di agenti di standby in un pool o i processi vengono accodati al di fuori della pianificazione del pre-provisioning, quando il conteggio degli agenti di standby è impostato come vuoto, i computer devono essere attivati da zero.
- Stai configurando correttamente gli agenti di standby con più immagini? - Se non si specifica quale immagine usare nella pipeline usando la richiesta ImageOverride , i processi verranno destinati alla prima immagine. Questo significa che, a seconda delle impostazioni di ridimensionamento, potresti non avere tanti agenti disponibili quanto ti aspetti, poiché alcuni vengono allocati ad altre immagini.
- Stai usando ImageVersionOverride nelle pipeline? - Quando si usa
ImageVersionOverride
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. Vengono configurati gli agenti standby utilizzando le versioni dell'immagine specificate nella configurazione del pool, pertanto, se si utilizza , gli agenti standby non corrisponderanno a quella versione e verrà avviato un nuovo agente. - Le impostazioni proxy/rete virtuale/firewall rallentano il pool? - La potenziale lentezza di qualsiasi impostazione di rete comporterà un tempo maggiore per l'avvio dell'agente e la connessione ad Azure DevOps.
- Si esegue l'override della versione dell'agente? - Per impostazione predefinita, i pool DevOps gestiti verranno eseguiti nella versione più recente dell'agente attività di Azure DevOps. Le impostazioni nel file yaml della pipeline (ad esempio, la richiesta di Agent.Version ) e le impostazioni dell'organizzazione di Azure DevOps possono forzare le pipeline a usare versioni precedenti dell'agente attività, richiedendo un nuovo download dopo l'allocazione di un computer.