Freigeben über


Verringern der Kaltstartzeit für Azure-Container-Apps

Wenn Ihre Container-App in Zeiten der Inaktivität auf Null skaliert wird, löst die nächste eingehende Anforderung einen Kaltstart aus. Ein Kaltstart ist der zeitaufwendige Prozess zum Abrufen Ihres Containerimages, bereitstellen von Ressourcen und Starten des Anwendungscodes.

Diese Verzögerung wirkt sich auf die Benutzererfahrung aus, insbesondere für Anwendungen, die schnelle Reaktionszeiten erfordern. Kaltstarts sind häufig in Szenarien mit großen Containerimages, komplexen Anwendungsinitialisierungs- oder ML/AI-Workloads besonders spürbar.

Dieser Leitfaden hilft Ihnen, Kaltstartzeiten in Azure-Container-Apps zu mindern.

Optimierung der Containerbildgröße

Maschinelles Lernen und KI-schwere Workloads sind häufig mit großen Containerimages verknüpft. Verringern Sie nach Möglichkeit die Größe dieser Bilder so weit wie möglich und beseitigen Sie die Verwendung unnötiger Bibliotheken.

Häufig lassen sich Images mit nur minimalen Änderungen von der Nutzung zum Trainieren auf die Nutzung zum Rückschließen umstellen. Stellen Sie sicher, dass Sie Ihre Container überwachen, um Entwicklungstools und Abhängigkeiten zu entfernen, die nur für die Modellentwicklung erforderlich sind, während Sie Ihren Container für die Ableitung vorbereiten.

Vermeiden Sie weit entfernte Bildregistrierungen

Verwenden Sie Containerregistrierungen in der Nähe Ihrer Container-Apps-Umgebung. Normalerweise bedeutet dies, dass Sie eine Azure-Containerregistrierung verwenden möchten, die in derselben Region wie Ihre Umgebung bereitgestellt wird, oder eine Premium-Registrierung, die die globale Verteilung bietet.

Verwalten großer Downloads

Verwenden Sie Speicherbindungen, um wichtige Daten nah an Ihrer Container-App zu halten, insbesondere bei großen Dateigrößen. Wenn Ihre App beispielsweise ein großes Sprachmodell erfordert, können Sie das Modell vorab auf Ihr Speicherkonto herunterladen. Durch das Lesen großer Dateien aus einem Speicherkonto vermeiden Sie die Latenz des Abrufens von Dateien über das Internet.

Wenn Sie eine Speichereinbindung für KI-Workloads erstellen, achten Sie darauf, die am besten geeigneten Bereitstellungsoptionen für Ihre Anforderungen zu verwenden.

Implementieren eines benutzerdefinierten Liveintegritätstests oder Starten des frühzeitigen Lauschens

Azure Container Apps richten automatisch einen Livetest ein, wenn der Eingang aktiviert ist. Die lange Startzeit von Images und Anwendungen nach dem Starten des Images kann Probleme mit dem Container verursachen. Container Apps kann die startende Anwendung beenden, da sie einen Fehler beim Livetest verursacht.

Um zu verhindern, dass Container Apps ein Image vorzeitig beendet, implementieren Sie einen benutzerdefinierte Livetest, um längere Startzeiten zu ermöglichen. Alternativ können Sie den dedizierten Zielport für einfache Verbindungen weiter oben im Startzyklus überwachen, um Ihre Anwendung nach dem Öffnen des Ports zu initialisieren.

Clientseitige Anpassungen

Die Kaltstartzeiten variieren je nach Anwendung. Um die Wahrnehmung dieser Zeit so weit wie möglich zu reduzieren, optimieren Sie Ihre Clients, um die Verzögerung zu berücksichtigen.

Es ist wichtig, den Benutzern zu signalisieren, dass eine bestimmte Anforderung länger dauern kann, und die Implementierung von Wiederholungen ist unerlässlich. Sie können Ihren Code auch härten, um unerwartete Timeouts zu vermeiden, die das, was Ihre Anwendung ordnungsgemäß verarbeiten kann, überschreiten.

Anwendungsseitige Instrumentierung

Um Leistungsprobleme zu beheben, implementieren Sie anwendungsseitige Leistungsmetriken und Protokollierung für jede Phase im Anwendungslebenszyklus.

Proaktives Aktivieren Ihrer App

Wenn die oben genannten Empfehlungen nicht die gewünschte Leistung bieten, aktivieren Sie Ihre App vor der tatsächlichen Nutzung. Überlegen Sie z. B., eine Aufgabe um 9 Uhr einzurichten, um die Anwendung zu wecken, bevor die Mitarbeiter ihren Arbeitstag beginnen. Dieser Ansatz kann zeitintensive Kaltstarts beseitigen und gleichzeitig Kosteneinsparungen durch Skalierung auf Null ermöglichen, wenn die App nicht verwendet wird.