Sie können die Leistung und die Kosten Ihrer Instanz für verwaltete DevOps-Pools verwalten, indem Sie Skalierungseinstellungen konfigurieren. Informationen zu Preisen und Leistung finden Sie unter Kosten und Leistung Verwalten.
Agentenzustand
Sie können Pools folgendermaßen konfigurieren:
-
Statuslos: Stellen Sie für jeden Job einen neuen Agenten bereit.
-
Zustandsbehaftet: Gemeinsame Nutzung von Agents zwischen mehreren Jobs zulassen.
Die Standardeinstellung für einen Pool ist zustandslos, was Sie mit dem Fresh-Agent bei jeder Einstellung erreichen können. In einigen Fällen möchten Teams möglicherweise Agents wiederverwenden, um die Pakete oder Dateien wiederzuverwenden, die während der vorherigen Pipelineausführung erstellt wurden. Die Erstellung von Workloads ist ein gängiges Szenario, in dem Teams den Status beibehalten und Agenten wiederverwenden möchten. Sie können zustandsbehaftete Pools über verwaltete DevOps-Pools erstellen und dabei die besten Sicherheitspraktiken berücksichtigen. Ein Agent kann standardmäßig für maximal sieben Tage wiederverwendet werden, Sie können ihn jedoch so konfigurieren, dass er früher wiederverwendet wird.
Hinweis
Sicherheits-Agents empfehlen Benutzern, zustandslose Pools als Schutz gegen Supply Chain-Angriffe zu verwenden. Verwenden Sie die Agentstatuseinstellung "Fresh Agent" jedes Mal.
Zustandslose Pools
Wenn Sie einen zustandslosen Agent konfigurieren, wird für jeden Auftrag ein neuer Agent beschafft. Der Agent wird nach Abschluss des Auftrags verworfen.
Weitere Informationen zum Lebenszyklus zustandsloser Agents und zur Verwendung in Azure-Pipelines finden Sie im Lebenszyklus von Agents und potenziellen Verzögerungen im Zuordnungsbereich .
Sie können Agents mithilfe der agentProfile Eigenschaft in der Ressource "Managed DevOps Pools" konfigurieren. Im folgenden Beispiel wird ein Stateless Agent angegeben.
{
"$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"
}
}
}
]
}
Sie können Agents mithilfe des agent-profile Parameters konfigurieren, wenn Sie einen Pool erstellen oder aktualisieren .
Im folgenden Beispiel wird ein Stateless Agent ohne Standby-Agents angegeben.
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
Das folgende Beispiel zeigt den Inhalt der Datei agent-profile.json.
{
"Stateless": {}
}
Sie können Agents mithilfe der agentProfile Eigenschaft in der Ressource "Managed DevOps Pools" konfigurieren. Im folgenden Beispiel wird ein Stateless Agent angegeben.
resource managedDevOpsPools 'Microsoft.DevOpsInfrastructure/pools@2025-09-20' = {
name: 'fabrikam-managed-pool'
location: 'eastus'
properties: {
...
agentProfile: {
kind: 'Stateless'
}
}
}
Wenn Sie den Agentstatusjedes Mal auf Fresh Agent festlegen, wird für jeden Auftrag ein neuer Agent beschafft. Der Agent wird nach Abschluss des Auftrags verworfen.
Zustandsbehaftete Pools
{
"$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"
}
}
}
]
}
Sie können Agents mithilfe des agent-profile Parameters konfigurieren, wenn Sie einen Pool erstellen oder aktualisieren .
Im folgenden Beispiel wird ein Stateful Agent mit einer siebentägigen maximalen Lebensdauer und einer dreißigminütigen Karenzzeit angegeben.
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
Das folgende Beispiel zeigt den Inhalt der agent-profile.json Datei.
{
"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'
}
}
}
Wenn Sie Der gleiche Agent kann von mehreren Builds verwendet werden (die "kind": "stateful" Einstellung in Ressourcenvorlagen oder die { "stateful": {...} } Einstellung in der Azure CLI) aktivieren, sind die Agents im Pool zustandsbehaftet. Sie können zustandsbehaftete Pools mithilfe der folgenden Einstellungen konfigurieren:
Maximale Lebensdauer für Standby-Agents (maxAgentLifetime) konfiguriert, wie lange ein Agent in einem zustandsbehafteten Pool aktiv sein kann, bevor er heruntergefahren und verworfen wird. Das Format für Maximale Lebensdauer für Standby-Agenten lautet dd.hh:mm:ss. Der Standardwert von Maximale Lebensdauer für Standby-Agenten ist auf die maximal zulässige Dauer von sieben Tagen (7.00:00:00) festgelegt.
Die Nachfrist (gracePeriodTimeSpan) konfiguriert die Zeitspanne, die ein Agent in einem zustandsbehafteten Pool auf neue Aufträge wartet, bevor er heruntergefahren wird, nachdem alle aktuellen und in die Warteschlange eingereihten Aufträge abgeschlossen wurden. Das Format für Gnadenfrist lautet dd.hh:mm:ss und standardmäßig ist keine Gnadenfrist vorgesehen.
Wichtig
Wenn ein Auftrag ausgeführt wird und das Intervall der maximalen Lebensdauer für Standby-Agents abläuft, wird der Agent nicht heruntergefahren, bis der Auftrag abgeschlossen ist, es sei denn, der Auftrag benötigt mehr als zwei Tage zur Ausführung. Einzelne Aufträge in verwalteten DevOps-Pools können maximal zwei Tage lang ausgeführt werden, auch wenn sie auf einem Standby-Agent ausgeführt werden, der für max. Zeit für Standby-Agents konfiguriert ist. Wenden Sie sich an den Support, wenn Ihr Workflow erfordert, dass Sie einen einzelnen Auftrag ausführen, der mehr als zwei Tage dauert.
Agents in zustandslosen Pools werden nach jedem Auftrag heruntergefahren und verworfen. Agents in zustandsbehafteten Pools werden weiterhin ausgeführt, wenn eine der folgenden Bedingungen erfüllt ist:
- Wenn ein anderer Auftrag nach Abschluss des ersten Auftrags in die Warteschlange gestellt wird, sendet Managed DevOps Pools den in die Warteschlange eingereihten Auftrag an den Agent, der den ersten Auftrag ausgeführt hat, anstatt ihn herunterzufahren.
- Wenn eine Schonfrist für den Pool konfiguriert ist, warten die Agents während der durch die Schonfrist angegebenen Dauer auf neue Aufträge, bevor sie heruntergefahren werden.
- Wenn Standby-Agenten aktiviert sind und das Abbild des Agenten die Kriterien für den aktiven Bereitstellungszeitraum erfüllt, wird der Agent weiterhin ausgeführt und wartet auf Einzelvorgänge.
Agents, die in zustandsbehafteten Pools ausgeführt werden, werden heruntergefahren und verworfen, wenn sie kontinuierlich die von Maximale Lebenszeit für Standby-Agents angegebene Dauer ausführen, auch wenn die vorherigen Bedingungen zutreffen. Wenn z. B. maximale Lebensdauer für Standby-Agenten für drei Tage konfiguriert ist und der Standby-Agent-Modus auf "Manuell, Gesamte Woche Schema" (Computer sind 24/7 verfügbar) festgelegt ist, starten die Agenten nach drei Tagen dauerhaften Betriebszeit neu.
Wichtig
Agents in zustandsbehafteten Pools können weiterhin heruntergefahren und verworfen werden, nachdem ein Auftrag abgeschlossen wurde, wenn keine Nachfrist existiert, kein aktiver Bereitstellungszeitraum für Standby-Agents besteht und keine mit dem Agenten übereinstimmenden Aufträge in der Warteschlange sind. Wenn ein Agent verworfen wird, gehen alle Zustände verloren.
Karenzzeiträume ermöglichen die kostengünstigste Möglichkeit, zustandsbehaftete Pools für Pipelines mit konsistenter Last auszuführen. Karenzzeiten erfordern nicht die Verwendung des Standby-Agent-Modus, um Agents online zu halten und bereit für die Annahme von Aufträgen.
Standby-Agent-Modus
Wenn Sie einen Pool erstellen, ist der Standby-Agent-Modus standardmäßig deaktiviert. Wenn der Standby-Agent-Modus deaktiviert ist, gibt es keine Standby-Agents, die Ihren Pipelines sofort zugewiesen werden sollen. Ihre Pipelines müssen möglicherweise zwischen einigen Augenblicken und 15 Minuten warten, bis bei Bedarf ein Agent bereitgestellt wird. Um die Leistung zu verbessern, aktivieren Sie den Standby-Agent-Modus und konfigurieren Sie einen Standby-Agent-Zeitplan, der ausreichend Kapazität für Ihre Workload bereitstellt.
Wenn Sie einen Standby-Agent-Zeitplan konfigurieren, vergleicht Managed DevOps Pools regelmäßig die Anzahl der bereitgestellten Agents mit der Anzahl der Standby-Agent, die Sie im aktuellen Bereitstellungsschema angeben. Es startet neue Agents nach Bedarf, um die Anzahl der Standby-Agents aufrechtzuerhalten. Sie können den aktuellen Status und die Anzahl der Agents in Ihrem Pool anzeigen, indem Sie den Bereich "Agents " verwenden.
Wichtig
Die Anzahl der Bereitstellungen in einem Schema darf nicht größer als der Wert der maximalen Agents sein, den Sie in den Pooleinstellungen konfigurieren.
Sie können den Standby-Agent-Modus mithilfe der folgenden Einstellungen konfigurieren:
-
Aus: Der Standby-Agent-Modus ist deaktiviert, und Agents werden bei Bedarf bereitgestellt, wenn Aufträge in die Warteschlange gestellt werden.
-
Manuell: Konfigurieren eines manuellen Standbyzeitplans.
-
Automatisch: Verwenden Sie einen automatischen Standbyzeitplan basierend auf dem Agent-Nutzungsverlauf. Sie können sie für Kosten und Leistung konfigurieren.
Sie können Standby-Agents mithilfe des resourcePredictionsProfile Abschnitts der agentProfile Eigenschaft konfigurieren. Stellen Sie "kind": "Manual" ein, um einen Neustart, ein Wochentagsschema oder ein Wochenschema zu konfigurieren, und geben Sie die Details des Schemas im resourcePredictions Bereich an. Um automatische Standby-Agents zu konfigurieren, legen Sie "kind": "Automatic"fest. Deaktivieren Sie Standby-Agents, indem Sie den ResourcePredictionsProfile Abschnitt weglassen. Weitere Informationen zur Konfiguration der einzelnen Skalierungstypen finden Sie in den folgenden Abschnitten.
{
"$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": {...}
}
}
}
]
}
Sie können Agents mithilfe des agent-profile Parameters konfigurieren, wenn Sie einen Pool erstellen oder aktualisieren .
Sie können Standby-Agents mithilfe von dem Abschnitt resourcePredictionsProfile des Parameters agent-profile konfigurieren. Verwenden Sie die "Manual": {} Einstellung, um einen Start von Grund auf neu, ein Wochentagsschema oder ein wochenübergreifendes Schema zu konfigurieren, und geben Sie die Details des Schemas im resourcePredictions Abschnitt an. Verwenden Sie die "Automatic": {} Einstellung, um automatische Standby-Agents zu konfigurieren. Weitere Informationen zur Konfiguration der einzelnen Skalierungstypen finden Sie in den folgenden Abschnitten.
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
Das folgende Beispiel zeigt den Inhalt der agent-profile.json Datei:
{
"Stateless": {},
"resourcePredictionsProfile": {
"Manual": {}
},
"resourcePredictions": {...}
}
Sie können Standby-Agents mithilfe des resourcePredictionsProfile Abschnitts der agentProfile Eigenschaft konfigurieren. Verwenden Sie die "kind": "Manual" Einstellung, um einen Start von Grund auf neu, ein Wochentagsschema oder ein wochenübergreifendes Schema zu konfigurieren, und geben Sie die Details des Schemas im resourcePredictions Abschnitt an. Verwenden Sie die kind: 'Automatic' Einstellung, um automatische Standby-Agents zu konfigurieren. Deaktivieren Sie Standby-Agents, indem Sie den ResourcePredictionsProfile Abschnitt weglassen. Weitere Informationen zur Konfiguration der einzelnen Skalierungstypen finden Sie in den folgenden Abschnitten.
resource managedDevOpsPools 'Microsoft.DevOpsInfrastructure/pools@2025-09-20' = {
name: 'fabrikam-managed-pool'
location: 'eastus'
properties: {
...
agentProfile: {
kind: 'Stateless'
resourcePredictionsProfile: {
kind: 'Manual'
}
resourcePredictions: {...}
}
}
}
Manuell
Der manuelle Modus eignet sich am besten für Teams, die ihre Pipelinenutzungsmuster für kontinuierliche Integration und kontinuierliche Übermittlung (CI/CD) kennen. Wenn Sie die manuelle Option verwenden, müssen Sie Ihr Vorbereitstellungsschema definieren. Sie definieren Ihr Schema basierend auf Ihrem Verständnis darüber, welche Agents im Pool am wahrscheinlichsten verwendet werden und wie viele Agents wahrscheinlich verwendet werden. Sie geben die Anzahl der Agents an, die die projizierte Anforderung erfüllen.
Sie können Ihren eigenen Bereitstellungszeitplan erstellen oder aus einem der vordefinierten Zeitpläne auswählen. Sie können die Zeitzone so konfigurieren, dass sie zum Angeben der Zeitpläne verwendet wird. Der Standardwert für Zeitzone vor der Bereitstellung ist (UTC) Koordinierte Weltzeit.
Sie können manuelle Standby-Agents auf eine der folgenden drei Arten konfigurieren:
Jeder Schnellstart für die Vorabkonfiguration hat die folgenden allgemeinen Einstellungen (zusätzlich zu den spezifischen Einstellungen dieses Schnellstarts):
-
Vorabbereitstellungszeitzone: Ermöglicht Ihnen die Konfiguration der Zeitzone für die Zeiträume in Ihrem Vorbereitstellungsschema. Der Standardwert für Zeitzone vor der Bereitstellung ist (UTC) Koordinierte Weltzeit.
-
Prozentsatz des Standby-Agents: Konfiguriert den Prozentsatz der Standby-Agents, die Sie für jedes Image benötigen. Sie können
* eingeben, um sicherzustellen, dass alle Abbildungen gleich bereitgestellt werden, oder Sie können eine ganze Zahl zwischen 0 und 100 angeben, um einen Prozentsatz darzustellen. Wenn Sie einen Prozentsatz angeben, muss die Summe aller Abbildungen 100 betragen. Wenn Sie nur ein einziges Abbild haben, geben Sie * oder 100 an. Wenn Sie Azure Resource Manager-Vorlagen (ARM-Vorlagen) verwenden, können Sie die Einstellung für den Standby-Agent-Prozentsatz im images Abschnitt konfigurieren. Weitere Informationen finden Sie unter Abbilder konfigurieren.
Sie können die manuelle Standby-Agent-Bereitstellung im resourcePredictionsProfile Bereich von agentProfile festlegen. Sie können die Details im resourcePredictions Abschnitt konfigurieren.
{
"$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
},
{},
{},
{},
{},
{}
]
}
}
}
}
]
}
Geben Sie die gewünschte Zeitzone für Ihr Schema mithilfe der timeZone Eigenschaft an. Der Standardwert ist UTC. Eine Liste der Zeitzonennamen für diese Eigenschaft finden Sie unter TimeZoneInfo.GetSystemTimeZones Method.
Sie können den Zeitplan für Standby-Agents mithilfe der daysData Liste definieren. Die daysData Liste kann entweder ein oder sieben Elemente enthalten.
Eine daysData Liste mit sieben Elementen wird den Wochentagen zugeordnet, beginnend mit Sonntag. Jedes dieser sieben Elemente kann null oder mehr "time": count Einträge aufweisen, eine Zeit im 24-Stunden-Format und eine Anzahl von Standby-Agenten angeben. Die angegebene Anzahl von Standby-Agents wird bis zum nächsten "time": count Eintrag beibehalten, der am selben Tag oder an einem folgenden Tag sein kann.
Eine daysData Liste mit einem einzelnen Element definiert ein All-Week-Schema, bei dem der einzelne "time": count Eintrag der Anzahl des Standby-Agents für die gesamte Woche entspricht.
Das folgende Beispiel ist ein manuelles Standby-Agent-Schema. Er verwendet den Wert Eastern Standard Time mit einem einzelnen Agenten, der Montag bis Freitag bereitgestellt wird, von 9:00 Uhr (Anzahl der Standby-Agenten 1) bis 17:00 Uhr (Anzahl der Standby-Agenten 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"
}
}
Ein einzelner daysData Eintrag enthält ein Verzeichnis mit Zeiten und der Anzahl der Standby-Agenten. Jeder "time" : count Eintrag gibt die Anzahl der Standby-Agents an, die zum angegebenen Zeitpunkt im 24-Stunden-Format geplant werden sollen. Aufeinanderfolgende Einträge "time" : count geben eine Folge von geplanten Agent-Zählungen für diesen Tag an.
"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
]
Die Standby-Agent-Zahlen werden am Ende eines Tages oder am Ende der Woche nicht automatisch auf Null zurückgesetzt. Wenn Sie ein leeres daysData Element angeben, werden Standby-Agents für diesen Tag nicht deaktiviert. Ein leeres Element daysData bedeutet, dass für diesen Tag keine Änderungen am Zeitplan für die Anzahl der Standby-Agenten vorgenommen wurden. Um den Standby-Agenten so zu aktivieren, dass er nach einer bestimmten Zeit auf Null gesetzt wird, müssen Sie explizit einen Eintrag "time" : count mit einem count von 0 angeben.
Beispiele
Wenn Sie keine Anpassung an der Anzahl des Standby-Agents vornehmen möchten, die am Ende des vorherigen Tages erfolgt (oder der Woche, wenn Sie den ersten Zeitraum der Woche konfigurieren), geben Sie ein daysData Element mit null Einträgen an.
{}
Um einen einzelnen Standby-Agent zu planen, beginnend um 09:00:00 und endend um 17:00:00 (unter Verwendung der durch die resourcePredictions Eigenschaft angegebenen Zeitzone), konfigurieren Sie wie folgt:
{
"09:00:00": 1,
"17:00:00": 0
}
Um einen einzelnen Standby-Agenten von Mitternacht bis 09:00:00 zu planen, gefolgt von 10 Standby-Agenten bis 17:00:00, konfigurieren Sie wie folgt:
{
"00:00:00": 1,
"09:00:00": 10,
"17:00:00": 0
}
Verwenden Sie zwei aufeinander folgende daysData Elemente, um einen Standby-Agenten einzuplanen, der ab dem angegebenen Tag um 09:00:00 verfügbar ist und am folgenden Tag um 17:00:00 endet.
{
"09:00:00": 1
},
{
"17:00:00": 0
}
Sie können Agents mithilfe des agent-profile Parameters konfigurieren, wenn Sie einen Pool erstellen oder aktualisieren .
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
Das folgende Beispiel zeigt den Inhalt der Datei agent-profile.json. Sie können die resourcePredictionsProfile manuelle Standby-Agent-Bereitstellung im Abschnitt des agent-profile Parameters angeben. Konfigurieren Sie die Details im resourcePredictions Abschnitt:
{
"Stateless": {},
"resourcePredictionsProfile": {
"Manual": {}
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"00:00:00": 1,
"04:00:00": 0
},
{},
{},
{},
{},
{}
]
}
}
Geben Sie die Zeitzone für Ihr Schema mithilfe der timeZone Eigenschaft an. Der Standardwert ist UTC. Eine Liste der Zeitzonennamen für diese Eigenschaft finden Sie unter TimeZoneInfo.GetSystemTimeZones Method.
Die daysData Liste definiert den Zeitplan für die Standby-Agents. Die daysData Liste kann entweder ein oder sieben Elemente enthalten.
Eine daysData Liste mit sieben Elementen wird den Wochentagen zugeordnet, beginnend mit Sonntag. Jedes dieser sieben Elemente kann null oder mehr "time": count Einträge aufweisen, eine Zeit im 24-Stunden-Format und eine Anzahl von Standby-Agenten angeben. Die angegebene Anzahl von Standby-Agents wird bis zum nächsten "time": count Eintrag beibehalten, der am selben Tag oder an einem folgenden Tag sein kann.
Eine daysData Liste mit einem einzelnen Element definiert ein All-Week-Schema, wobei der einzelne "time": count Eintrag der Anzahl des Standby-Agents für die gesamte Woche entspricht.
Das folgende Beispiel ist ein manuelles Standby-Agent-Schema. Das Schema verwendet den Wert Eastern Standard Time mit einem einzelnen Agent, der Montag bis Freitag bereitgestellt wird, von 9:00 Uhr (Anzahl der Standby-Agent 1) bis 17:00 Uhr (Anzahl der Standby-Agenten 0):
{
"Stateless": {},
"resourcePredictionsProfile": {
"Manual": {}
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{}
]
}
}
Ein einzelner daysData Eintrag enthält ein Verzeichnis mit Zeiten und der Anzahl der Standby-Agenten. Jeder "time" : count Eintrag gibt die Anzahl der Standby-Agents an, die zum angegebenen Zeitpunkt im 24-Stunden-Format geplant werden sollen. Aufeinanderfolgende Einträge "time" : count geben eine Folge von geplanten Agent-Zählungen für diesen Tag an.
"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
]
Die Standby-Agent-Zahlen werden am Ende eines Tages oder am Ende der Woche nicht automatisch auf Null zurückgesetzt. Wenn Sie ein leeres daysData Element angeben, werden Standby-Agents für diesen Tag nicht deaktiviert. Ein leeres Element daysData bedeutet, dass für diesen Tag keine Änderungen am Zeitplan für die Anzahl der Standby-Agenten vorgenommen wurden. Um den Standby-Agenten so zu aktivieren, dass er nach einer bestimmten Zeit auf Null gesetzt wird, müssen Sie explizit einen Eintrag "time" : count mit einem count von 0 angeben.
Beispiele
Wenn Sie die angegebene Anzahl des Standby-Agents nicht am Ende des vorherigen Tags (oder der Woche, wenn Sie den ersten Zeitraum der Woche konfigurieren) anpassen möchten, geben Sie ein daysData Element mit null Einträgen an:
{}
Geben Sie die folgende Konfiguration an, um einen einzelnen Standby-Agenten so zu planen, dass er um 09:00:00 startet und um 17:00:00 stoppt (wobei Sie die in der Eigenschaft resourcePredictions angegebene Zeitzone verwenden).
{
"09:00:00": 1,
"17:00:00": 0
}
Um einen einzelnen Standby-Agenten von Mitternacht bis 09:00:00 zu planen, gefolgt von 10 Standby-Agenten bis 17:00:00, konfigurieren Sie wie folgt:
{
"00:00:00": 1,
"09:00:00": 10,
"17:00:00": 0
}
Verwenden Sie zwei aufeinander folgende daysData-Elemente, um einen Bereitschaftsagenten zu planen, der ab 09:00:00 am angegebenen Tag verfügbar ist und bis 17:00:00 am folgenden Tag zur Verfügung steht.
{
"09:00:00": 1
},
{
"17:00:00": 0
}
Sie können die manuelle Standby-Agent-Bereitstellung im resourcePredictionsProfile Bereich von agentProfile festlegen. Sie können die Details im resourcePredictions Abschnitt konfigurieren:
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
}
{}
{}
{}
{}
{}
]
}
}
}
}
Geben Sie die gewünschte Zeitzone für Ihr Schema mithilfe der timeZone Eigenschaft an. Der Standardwert ist UTC. Eine Liste der Zeitzonennamen für diese Eigenschaft finden Sie unter TimeZoneInfo.GetSystemTimeZones Method.
Die daysData Liste definiert den Zeitplan für die Standby-Agents. Die daysData Liste kann entweder ein oder sieben Elemente enthalten.
Eine daysData Liste mit sieben Elementen wird den Wochentagen zugeordnet, beginnend mit Sonntag. Jedes dieser sieben Elemente kann null oder mehr 'time': count Einträge aufweisen, eine Zeit im 24-Stunden-Format und eine Anzahl von Standby-Agenten angeben. Die angegebene Anzahl von Standby-Agents wird bis zum nächsten 'time': count Eintrag beibehalten, der am selben Tag oder an einem folgenden Tag sein kann.
Eine daysData Liste mit einem einzelnen Element definiert ein All-Week-Schema, wobei der einzelne 'time': count Eintrag der Anzahl des Standby-Agents für die gesamte Woche entspricht.
Das folgende Beispiel ist ein manuelles Standby-Agent-Schema, das den Wert Eastern Standard Timeverwendet, wobei ein einzelner Agent montags bis freitags von 9:00 Uhr (Standby-Agent-Anzahl 1) bis 17:00 Uhr (Anzahl des Standby-Agents 0) bereitgestellt wird:
{
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'
}
}
Ein einzelner daysData Eintrag enthält ein Verzeichnis mit Zeiten und der Anzahl der Standby-Agenten. Jeder 'time' : count Eintrag gibt die Anzahl der Standby-Agents an, die zum angegebenen Zeitpunkt im 24-Stunden-Format geplant werden sollen. Aufeinanderfolgende Einträge 'time' : count geben eine Folge von geplanten Agent-Zählungen für diesen Tag an.
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
]
Die Anzahl der Standby-Agenten wird nicht automatisch am Ende eines Tages oder am Ende der Woche auf Null zurückgesetzt, und die Angabe eines leeren daysData-Elements deaktiviert keine Standby-Agenten für diesen Tag. Ein leeres Element daysData bedeutet, dass für diesen Tag keine Änderungen am Zeitplan für die Anzahl der Standby-Agenten vorgenommen wurden. Um den Standby-Agenten so zu aktivieren, dass er nach einer bestimmten Zeit auf Null gesetzt wird, müssen Sie explizit einen Eintrag "time" : count mit einem count von 0 angeben.
Beispiele
Wenn Sie keine Anpassung an der Anzahl des Standby-Agents vornehmen möchten, die am Ende des vorherigen Tages erfolgt (oder der Woche, wenn Sie den ersten Zeitraum der Woche konfigurieren), geben Sie ein daysData Element mit null Einträgen an.
{}
Geben Sie die folgende Konfiguration an, um einen einzelnen Standby-Agenten zu planen, um zu 09:00:00 zu beginnen und um zu 17:00:00 zu beenden (mithilfe der in der resourcePredictions-Eigenschaft angegebenen Zeitzone):
{
'09:00:00': 1
'17:00:00': 0
}
Um einen einzelnen Standby-Agenten von Mitternacht bis 09:00:00 zu planen, gefolgt von 10 Standby-Agenten bis 17:00:00, konfigurieren Sie wie folgt:
{
'00:00:00': 1
'09:00:00': 10
'17:00:00': 0
}
Verwenden Sie zwei aufeinanderfolgende daysData-Elemente, um einen Standby-Agenten zu planen, der am angegebenen Tag um 09:00:00 verfügbar ist und am folgenden Tag um 17:00:00 endet.
{
'09:00:00': 1
}
{
'17:00:00': 0
}
Von Grund auf neu starten
Wenn Sie von Grund auf neu beginnen möchten, können Sie eine Liste der Bereitstellungszeiträume als Bereitstellungsschema hinzufügen. Jeder Bereitstellungszeitraum besteht aus einem Starttag, einem Endtag, einer Zeitzone, einer Startzeit, einer Startzeit, einer Endzeit und einer Anzahl. Bereitstellungszeiträume dürfen sich nicht überschneiden.
| Eigenschaft |
Beschreibung |
|
Mehrtägiger Tag |
Wenn Sie diese Option auswählen, können Sie sowohl "Starttag " als auch " Endtag " für Ihr Bereitstellungsschema konfigurieren. |
|
Bis zum nächsten Zeitraum |
Wenn Sie diese Option auswählen, wird der Bereitstellungszeitraum vom Startzeitwert bis zum Beginn des nächsten Bereitstellungszeitraums ausgeführt. |
|
Starttag |
Der Tag, an dem der Bereitstellungszeitraum beginnt. |
|
Endtag |
Der Tag, an dem der Bereitstellungszeitraum endet. Erforderlich, wenn "Multi-Day" ausgewählt ist. |
|
Startzeit |
Der Zeitpunkt, zu dem der Bereitstellungszeitraum beginnt. |
|
Endzeit |
Der Zeitpunkt, zu dem der Bereitstellungszeitraum endet. Erforderlich, es sei denn, bis zum nächsten Zeitraum ausgewählt ist. |
|
Zählen |
Die Menge der bereitzustellenden Standby-Agenten. Diese Zahl muss größer als Null sein und darf nicht größer als der Wert der maximalen Agents in den Pooleinstellungen sein. |
Nachdem Sie einen Bereitstellungszeitraum erstellt haben, können Sie den Zeitraum aus der Liste der Vorbereitstellungsschemas löschen oder bearbeiten.
Das folgende Beispiel zeigt, wie Sie ein manuelles Schema mit einem Agent konfigurieren, der montagmorgens von 12:00 bis 05:00 Uhr EST bereitgestellt wird.
{
"$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
}
{}
{}
{}
{}
{}
]
}
}
}
}
Wochenplan
Wenn Sie das Wochentagsschema auswählen, können Sie eine Start- und Endzeit angeben, zwischen der die angegebene Anzahl von Standby-Agents jeden Wochentag im Standbymodus ist.
| Eigenschaft |
Beschreibung |
|
Startzeit |
Der Zeitpunkt, zu dem der Bereitstellungszeitraum beginnt. |
|
Endzeit |
Der Zeitpunkt, zu dem der Bereitstellungszeitraum endet. |
|
Anzahl der Bereitstellungen |
Die Menge der bereitzustellenden Standby-Agenten. Diese Zahl muss größer als Null sein und darf nicht größer als der Wert der maximalen Agents sein, der in den Pooleinstellungen konfiguriert ist. |
Im folgenden Beispiel werden vier Agents so konfiguriert, dass sie während der Arbeitszeit verwendet werden, und es werden keine Agents während arbeitsfreien Stunden und Wochenenden unter Verwendung von Eastern Time (UTC-5) verwendet.
{
"$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
}
{}
]
}
}
}
}
Gesamtwochenschema
Wenn Sie das All-Week-Schema auswählen, können Sie die Anzahl der Agents angeben, die sie immer verfügbar machen möchten.
{
"$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
}
]
}
}
}
}
Automatic
Wenn Sie Ihre Verwendungsmuster nicht kennen und sich auf die automatische Prognose basierend auf früheren Daten verlassen möchten, wählen Sie "Automatisch" aus. Sie können zwischen Kosten und Agentleistung ausgleichen, indem Sie einen Schieberegler mit den folgenden fünf Optionen verwenden. Verwaltete DevOps-Pools führen eine Abfrage über die letzten drei Wochen der Verlaufsdaten aus (sofern verfügbar). Es organisiert die in die Warteschlange eingereihten Sitzungen des Pools in fünfminütige Zeiträume und weist jeder Stunde den angegebenen Prozentwert zu (um Spitzen zu vermeiden).
-
Am kostengünstigsten (
MostCostEffective): 10. Perzentil.
-
Kostengünstiger (
MoreCostEffective): 25. Quantil.
-
Ausgeglichen (Standard) (
Balanced): 50. Perzentil.
-
Mehr Leistung (
MorePerformance): 75. Perzentil.
-
Beste Leistung (
BestPerformance): 90. Perzentil.
{
"$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'
}
}
}
}
Lebenszyklus von Agenten und potenziellen Verzögerungen bei der Zuordnung
Wenn Sie Standby-Agents mithilfe eines zustandslosen Schemas aktivieren, müssen Sie den Azure Pipelines-Agent installieren und konfigurieren, bevor Sie vom bereiten Zustand zum zugewiesenen Zustand wechseln und eine Pipeline ausführen.
Wenn verwaltete DevOps-Pools neue Agents bereitstellen, versucht es, den neuesten Azure Pipelines-Agent herunterzuladen, damit er bereits auf Standby-Agents heruntergeladen wird, bevor er in den Status "Bereit" wechselt. Der Start, die Verbindung und der Anfang des Auftrags können von 10 Sekunden bis zu einer Minute dauern, abhängig von der SKU-Geschwindigkeit des Pools, dem verwendeten Image und der Netzwerklast. Wenn Sie bestimmte Einstellungen in einem Pipeline-Auftrag angeben, kann dies zu einem erneuten Herunterladen und einem Ausführen eines anderen Agenten führen. Rückschritte und Rollbacks des Agents können ebenfalls dazu führen, dass der Agent erneut heruntergeladen wird.
Ready-Agents haben immer eine potenzielle Verzögerung, da verwaltete DevOps-Pools diesen Agent auf eine "ephemere" Weise verwenden, was bedeutet, dass wir den Task-Agent einmal pro Auftrag starten und ausführen. Wenn Verzögerungen bei der Übernahme von Aufträgen durch bereitstehende Agents aus Azure DevOps auftreten, sollten Sie die folgenden Fragen in Betracht ziehen:
- Haben Sie Bevollmächtigte bereit? Das häufigste Problem ist ein Missverständnis darüber, wann Agenten vorab bereitgestellt werden sollten. Maschinen müssen von Grund auf neu hochgefahren werden, wenn die folgenden Bedingungen erfüllt sind:
- Die Anzahl der in der Warteschlange stehenden Aufträge ist größer als die Anzahl der Standby-Agenten eines Pools.
- Aufträge werden außerhalb des Vorbereitstellungszeitplans in die Warteschlange gestellt.
- Die Zahl der Standby-Agenten ist auf leer gesetzt.
- Konfigurieren Sie Standby-Agents mit mehreren Images ordnungsgemäß? Wenn Sie nicht angeben, welches Bild in Ihrer Pipeline mithilfe der ImageOverride-Anforderung verwendet werden soll, zielen Aufträge auf das erste Bild ab. Je nach Ihren Skalierungseinstellungen stehen Ihnen möglicherweise nicht so viele Agents zur Verfügung, wie Sie erwarten, da einige anderen Bildern zugeordnet sind.
- Verwenden Sie die
ImageVersionOverride Anforderung in Ihren Pipelines? Wenn Sie die ImageVersionOverride Anforderung verwenden, um eine andere Bildversion anzugeben als die in den Pooleinstellungen konfigurierten, beginnt jeder Agent bei Bedarf mit der angegebenen Imageversion. Standby-Agents werden mithilfe der in der Konfiguration Ihres Pools angegebenen Imageversionen bereitgestellt. Wenn Sie verwenden ImageVersionOverride, stimmen alle Standby-Agents nicht mit dieser Version überein, und ein neuer Agent wird gestartet.
- Verlangsamen Proxy-, virtuelle Netzwerk- oder Firewalleinstellungen Ihren Pool? Potenzielle Verzögerungen von jeglichen Netzwerkeinstellungen führen dazu, dass Agents länger benötigen, um gestartet und mit Azure DevOps verbunden zu werden.
- Überschreiben Sie die Version des Agenten? Standardmäßig werden verwaltete DevOps-Pools auf der neuesten Azure DevOps-Task-Agent-Version ausgeführt. Einstellungen in der Pipeline YAML (z. B. die
Agent.Version Anforderung) und Azure DevOps-Organisationseinstellungen können die Verwendung älterer Versionen des Aufgaben-Agents erzwingen, was einen erneuten Download erfordert, nachdem ein Rechner zugewiesen wurde.
Verwandte Inhalte