Freigeben über


Konfigurieren der Skalierung

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 .

Screenshot, der einen zustandslosen Agenten zeigt.

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

Screenshot eines zustandsbehafteten Agents.

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.

Screenshot der Auswahlen für den Standby-Agent-Modus.

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.

Screenshot des manuellen Standbymodus.

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.

Screenshot eines manuellen Skalierungsschemas.

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.

Screenshot, der ein Wochentagsschema zeigt.

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.

Screenshot einer Wochenübersicht.

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.

Screenshot der Einstellung für die automatische Skalierung.

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.