Konfigurera skalningsinställningar för att hantera prestanda och kostnader för din hanterade DevOps-pool. Information om priser och prestanda finns i Hantera kostnader och prestanda.
Agenttillstånd
Hanterade DevOps-pooler kan konfigureras som tillståndslösa eller tillståndskänsliga.
Standardinställningen för en hanterad DevOps-pool är tillståndslös (fresh agent varje gång) men i vissa fall kanske teamen vill återanvända agenter för att återanvända paketen eller filerna som skapades under den föregående pipelinekörningen. Skapa arbetsbelastning är ett vanligt scenario där team vill bevara tillstånds- och återanvändningsagenter. Du kan uppnå tillståndskänsliga pooler via Hanterade DevOps-pooler samtidigt som du balanserar dem med bästa praxis för säkerhet. Som standard kan en agent återanvändas i högst 7 dagar, men du kan konfigurera den så att den återanvänds tidigare.
Kommentar
Tillståndslösa pooler eller användning av agenttillståndsinställningen Fresh agent varje gång rekommenderas av säkerhetsexperter som skydd mot leveranskedjeattacker.
Tillståndslösa pooler
När en tillståndslös agent har konfigurerats anskaffas en ny agent för varje jobb och tas bort när jobbet har slutförts.
När samma agent kan användas av flera versioner ("kind": "stateful" i resursmallar eller { "stateful": {...} } i Azure CLI) är aktiverad anses agenter i poolen vara tillståndskänsliga. Tillståndskänsliga pooler konfigureras med hjälp av följande inställningar.
Maximalt antal aktiva för standby-agenter (maxAgentLifetime) konfigurerar den maximala varaktighet som en agent i en tillståndskänslig pool kan köra innan den stängs av och ignoreras. Formatet för Max time to live för standby-agenter är dd.hh:mm:ss. Standardvärdet för Max time to live för väntelägesagenter är inställt på den maximala tillåtna varaktigheten på sju dagar (7.00:00:00).
Respitperiod (gracePeriodTimeSpan) konfigurerar hur lång tid en agent i en tillståndskänslig pool väntar på nya jobb innan den stängs av när alla aktuella och köade jobb har slutförts. Formatet för respitperiod är dd.hh:mm:ss och standardvärdet är ingen respitperiod.
Medan agenter i tillståndslösa pooler stängs av och ignoreras efter varje jobb, fortsätter agenter i tillståndskänsliga pooler att köras om något av följande villkor uppfylls.
Om det finns ett annat jobb i kö när det första jobbet slutförs skickar Hanterade DevOps-pooler jobbet till agenten som körde det första jobbet i stället för att stänga av det.
Om det finns en respitperiod som konfigurerats för poolen väntar agenter på nya jobb under den varaktighet som anges av respitperioden innan de stängs av.
Om standby-agenter är aktiverade och agentbilden uppfyller kriterierna för den aktiva etableringsperioden fortsätter agenten att köra och vänta på jobb.
Agenter som körs i tillståndskänsliga pooler stängs av och ignoreras om de körs kontinuerligt under den tid som anges av Max time to live för standby-agenter, även om de tidigare villkoren är sanna. Om maxtid för att leva för väntelägesagenter har konfigurerats i tre dagar och Läget För vänteläge är inställt på Manuell, Alla veckors schema (datorer som är tillgängliga dygnet innan), startas agenterna om efter tre kontinuerliga dagars drifttid.
Viktigt!
Agenter i tillståndskänsliga pooler kan fortfarande stängas av och ignoreras när ett jobb har slutförts om det inte finns någon respitperiod, ingen aktiv etableringsperiod för standby-agenter och inga köade jobb som matchar agenten. När en agent har ignorerats går alla tillstånd förlorade.
Respitperioden möjliggör det mest kostnadseffektiva sättet att köra tillståndskänsliga pooler för pipelines med konsekvent belastning och kräver inte användning av standby-agentläge för att hålla agenter online och redo att acceptera jobb.
Standby-agentläge
När du skapar en pool är standby-agentläget inaktiverat som standard och det finns inga standby-agenter att omedelbart tilldela till dina pipelines, som kan behöva vänta en stund, upp till 15 minuter, för att en agent ska etableras på begäran. För bättre prestanda aktiverar du standby-agentläge och konfigurerar ett väntelägesagentschema som ger kapacitet för din arbetsbelastning.
Av – Standby-agentläget är inaktiverat och agenter etableras på begäran när jobb placeras i kö.
Manuell – Konfigurera ett manuellt väntelägesschema.
Automatisk – Använd ett automatiskt väntelägesschema baserat på agentanvändningshistorik och kan konfigureras för kostnad och prestanda.
Standby-agenter konfigureras med hjälp resourcePredictionsProfile av avsnittet i agentProfile egenskapen. Ställ in "kind": "Manual" för att konfigurera ett start från början, veckodagsschema eller hela veckans schema och ange information om schemat i avsnittet resourcePredictions . Ställ in "kind": "Automatic" för att konfigurera automatiska standby-agenter. Utelämna avsnittet ResourcePredictionsProfile för att inaktivera väntelägesagenter. Mer information om hur du konfigurerar varje skalningstyp finns i följande avsnitt.
Agenter konfigureras med hjälp av parametern agent-profile när du skapar eller uppdaterar en pool.
Standby-agenter konfigureras med hjälp resourcePredictionsProfile av avsnittet i parametern agent-profile . Ställ in "kind": "Manual" för att konfigurera ett start från början, veckodagsschema eller hela veckans schema och ange information om schemat i avsnittet resourcePredictions . Ställ in "kind": "Automatic" för att konfigurera automatiska standby-agenter. Mer information om hur du konfigurerar varje skalningstyp finns i följande avsnitt.
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
I följande exempel visas innehållet i filen agent-profile.json .
Manuellt läge passar bäst för team som har kunskap om användningsmönstren för CI/CD-pipelines. Om du väljer det manuella alternativet måste du definiera ditt företableringsschema baserat på din förståelse av när agenter i poolen mest sannolikt kommer att användas och hur många agenter som sannolikt kommer att användas och ange ett etableringsantal agenter som uppfyller den beräknade efterfrågan.
Du kan skapa ett eget etableringsschema eller välja mellan något av de fördefinierade schemana, och du kan konfigurera tidszonen som ska användas för att ange scheman. Standardvärdet för Pre-provisioning TimeZone är (UTC) Coordinated Universal Time.The default value for Pre-provisioning TimeZone is (UTC) Coordinated Universal Time.
Dricks
Etableringsantalet i ett schema får inte vara större än de högsta agenter som konfigurerats i Poolinställningar.
Med några minuters mellanrum kontrollerar Hanterade DevOps-pooler antalet aktiva agenter som kör jobb och väntelägesagenter som väntar på jobb, för att säkerställa att etableringsantalet agenter som anges av det aktuella etableringsschemat är tillgängligt. Om det aktuella etableringsantalet är 10 och det finns fem agenter som kör jobb och två agenter i vänteläge startar Managed DevOps-pooler ytterligare tre standby-agenter för att öka det totala antalet agenter till 10.
Manuell konfiguration av standby-agenten kan konfigureras på något av följande tre sätt.
Börja från början – Konfigurera en uppsättning etableringsperioder för standby-agenter
Var och en av snabbstarterna före etableringen har följande vanliga inställningar utöver de specifika inställningarna för den snabbstarten.
Med företablering av tidszon kan du konfigurera tidszonen för tiderna i ditt företableringsschema. Standardvärdet för Pre-provisioning TimeZone är (UTC) Coordinated Universal Time.The default value for Pre-provisioning TimeZone is (UTC) Coordinated Universal Time.
Standby-agentprocent konfigurerar procentandelen väntelägesagenter som du vill ha för varje avbildning. Du kan ange * för att se till att alla bilder etableras på samma sätt, eller så kan du ange ett heltal från 0 till 100 för att representera en procentandel. Om du anger en procentandel måste summan för alla bilder vara lika med 100. Om du har en enda bild anger du * eller 100. Standby-agentprocent konfigureras i avsnittet images när arm-mallar används. Mer information finns i Konfigurera avbildningar.
Manuell etablering av agentProfilestandby-agenten anges i resourcePredictionsProfile avsnittet och informationen konfigureras i avsnittet resourcePredictions .
Ange önskad tidszon för ditt schema med hjälp av timeZone egenskapen . Standardvärdet är UTC. Information om hur du hämtar en lista över tidszonsnamn för den här egenskapen finns i TimeZoneInfo.GetSystemTimeZones-metoden.
Schemat för standby-agenterna definieras av listan daysData . Listan daysData kan ha antingen ett objekt eller sju objekt.
En daysData lista med sju objekt mappar till veckodagarna, från och med söndag. Var och en av dessa sju objekt kan ha noll eller fler "time": count poster, vilket anger en tid i 24-timmarsformat och ett antal standby-agenter. Det angivna antalet väntelägesagenter bibehålls till nästa "time": count post, som kan vara samma dag eller en följande dag.
En daysData lista med ett enda objekt definierar ett All Week-schema, där den enskilda "time": count posten motsvarar antalet standby-agenter för hela veckan.
Följande exempel är ett manuellt standby-agentschema med hjälp av Eastern Standard Time, med en enda agent etablerad måndag till fredag från 09:00 (antal standbyagenter 1) till 17:00 (antal standbyagenter 0).
Ett enskilt daysData objekt innehåller en ordlista över tider och antal väntelägesagenter. Varje "time" : count post anger antalet väntelägesagenter som ska schemaläggas från och med den angivna tiden, i 24-timmarsformat. Poster i följd "time" : count anger en sekvens med schemalagda agentantal för den dagen.
"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
]
Antalet standbyagenter återställs inte automatiskt till noll i slutet av en dag eller i slutet av veckan, och om du anger ett tomt daysData objekt inaktiveras inte väntelägesagenter för den dagen. Ett tomt daysData objekt innebär att det inte finns några ändringar i väntelägesagentens antalsschema för den dagen. Om du vill ställa in väntelägesagenten till noll från och med en viss tidsperiod måste du uttryckligen ange en "time" : count post med värdet count0.
Exempel
Om du inte vill göra någon justering av antalet väntelägesagenter som angavs i slutet av föregående dag (eller vecka om du konfigurerar den första perioden i veckan) anger du ett daysData objekt med noll poster.
{
}
Om du vill schemalägga en enskild standby-agent att starta vid 09:00:00 och stoppa vid 17:00:00 (med hjälp av den tidszon som anges av resourcePredictions egenskapen) anger du följande konfiguration.
{
"09:00:00": 1,
"17:00:00": 0
}
Om du vill schemalägga en enda standby-agent från midnatt till och med 09:00:00, följt av 10 standby-agenter till 17:00:00, anger du följande konfiguration.
{
"00:00:00": 1,
"09:00:00": 10,
"17:00:00": 0
}
Om du vill schemalägga att en standby-agent ska vara tillgänglig från och med 09:00:00 den angivna dagen och stoppa 17:00:00 följande dag använder du två på varandra följande daysData objekt.
{
"09:00:00": `1`
},
{
"17:00:00": 0
}
Agenter konfigureras med hjälp av parametern agent-profile när du skapar eller uppdaterar en pool.
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
I följande exempel visas innehållet i filen agent-profile.json .
Manuell etablering av standby-agenten anges i resourcePredictionsProfile avsnittet i parametern agent-profile och informationen konfigureras i avsnittet resourcePredictions .
Ange önskad tidszon för ditt schema med hjälp av timeZone egenskapen . Standardvärdet är UTC. Information om hur du hämtar en lista över tidszonsnamn för den här egenskapen finns i TimeZoneInfo.GetSystemTimeZones-metoden.
Schemat för standby-agenterna definieras av listan daysData . Listan daysData kan ha antingen ett objekt eller sju objekt.
En daysData lista med sju objekt mappar till veckodagarna, från och med söndag. Var och en av dessa sju objekt kan ha noll eller fler "time": count poster, vilket anger en tid i 24-timmarsformat och ett antal standby-agenter. Det angivna antalet väntelägesagenter bibehålls till nästa "time": count post, som kan vara samma dag eller en följande dag.
En daysData lista med ett enda objekt definierar ett All Week-schema, där den enskilda "time": count posten motsvarar antalet standby-agenter för hela veckan.
Följande exempel är ett manuellt standby-agentschema med hjälp av Eastern Standard Time, med en enda agent etablerad måndag till fredag från 09:00 (antal standbyagenter 1) till 17:00 (antal standbyagenter 0).
Ett enskilt daysData objekt innehåller en ordlista över tider och antal väntelägesagenter. Varje "time" : count post anger antalet väntelägesagenter som ska schemaläggas från och med den angivna tiden, i 24-timmarsformat. Poster i följd "time" : count anger en sekvens med schemalagda agentantal för den dagen.
"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
]
Antalet standbyagenter återställs inte automatiskt till noll i slutet av en dag eller i slutet av veckan, och om du anger ett tomt daysData objekt inaktiveras inte väntelägesagenter för den dagen. Ett tomt daysData objekt innebär att det inte finns några ändringar i väntelägesagentens antalsschema för den dagen. Om du vill ställa in väntelägesagenten till noll från och med en viss tidsperiod måste du uttryckligen ange en "time" : count post med värdet count0.
Exempel
Om du inte vill göra någon justering av antalet väntelägesagenter som angavs i slutet av föregående dag (eller vecka om du konfigurerar den första perioden i veckan) anger du ett daysData objekt med noll poster.
{
}
Om du vill schemalägga en enskild standby-agent att starta vid 09:00:00 och stoppa vid 17:00:00 (med hjälp av den tidszon som anges av resourcePredictions egenskapen) anger du följande konfiguration.
{
"09:00:00": 1,
"17:00:00": 0
}
Om du vill schemalägga en enda standby-agent från midnatt till och med 09:00:00, följt av 10 standby-agenter till 17:00:00, anger du följande konfiguration.
{
"00:00:00": 1,
"09:00:00": 10,
"17:00:00": 0
}
Om du vill schemalägga att en standby-agent ska vara tillgänglig från och med 09:00:00 den angivna dagen och stoppa 17:00:00 följande dag använder du två på varandra följande daysData objekt.
{
"09:00:00": `1`
},
{
"17:00:00": 0
}
Börja från början
Om du väljer att börja från början kan du lägga till en lista över etableringsperioder som ska fungera som ditt etableringsschema. Varje etableringsperiod består av en startdag, slutdag, tidszon, starttid, sluttid och ett antal. Etableringsperioder kan inte överlappa varandra.
Property
beskrivning
Flera dagar
När du är markerad kan du konfigurera både en startdag och en slutdag för ditt etableringsschema.
Till nästa period
När den är markerad körs etableringsperioden från starttiden till början av nästa etableringsperiod.
Startdag
Dagen då etableringsperioden startar.
Slutdag
Dagen då etableringsperioden slutar. Krävs om flera dagar är markerat.
Starttid
Den tid som etableringsperioden startar.
Sluttid
Den tid som etableringsperioden tar slut. Krävs såvida inte Till nästa period är markerad.
Antal
Antalet standby-agenter som ska etableras. Det här talet måste vara större än noll och får inte vara större än värdet Maximalt antal agenter som konfigurerats i Poolinställningar.
När du har skapat en etableringsperiod kan du ta bort eller redigera perioden från listan Företableringsschema .
I följande exempel konfigureras ett manuellt schema med en agent etablerad på måndagsmorgnar från 12:00 till 05:00 EST.
Om du väljer veckodagsschemat kan du ange en starttid och sluttid där det angivna antalet standby-agenter ska vara i vänteläge varje veckodag.
Property
beskrivning
Starttid
Den tid som etableringsperioden startar.
Sluttid
Den tid som etableringsperioden tar slut.
Antal etableringar
Antalet standby-agenter som ska etableras. Det här talet måste vara större än noll och får inte vara större än värdet Maximalt antal agenter som konfigurerats i Poolinställningar.
I följande exempel konfigureras fyra agenter som ska användas under arbetstid med 0 agenter under icke-arbetstid och helger, med hjälp av Eastern Standard Time.
Om du inte känner till dina användningsmönster och vill förlita dig på automatisk prognostisering baserat på tidigare data väljer du Automatisk. Du kan balansera mellan kostnad och agentprestanda med hjälp av ett skjutreglage med följande fem alternativ. Hanterade DevOps-pooler kör en fråga under de senaste tre veckornas historiska data (om tillgängligt), organiserar köade sessioner i poolen i fem minuter och tilldelar den angivna percentilen (för att undvika toppar) till varje timme.
Mest kostnadseffektiva (MostCostEffective) – tionde percentilen
Mer kostnadseffektiv (MoreCostEffective) – 25:e percentilen