Udostępnij przez


Skrócenie czasu zimnego startu w usłudze Azure Container Apps

Gdy aplikacja kontenerowa skalowana jest do zera w okresach braku aktywności, kolejne przychodzące żądanie wyzwala zimny start. Zimny start to czasochłonny proces pobierania obrazu kontenera, przydzielania zasobów i uruchamiania kodu aplikacji.

To opóźnienie ma wpływ na środowisko użytkownika, szczególnie w przypadku aplikacji, które wymagają szybkiego czasu odpowiedzi. Zimne uruchomienia są często najbardziej zauważalne w scenariuszach obejmujących duże obrazy kontenerów, złożone inicjowanie aplikacji lub obciążenia związane z uczeniem maszynowym i sztuczną inteligencją.

Ten przewodnik pomaga ograniczyć czasy zimnego uruchamiania w usłudze Azure Container Apps.

Optymalizowanie rozmiaru obrazu kontenera

Obciążenia uczenia maszynowego i sztucznej inteligencji są często kojarzone z dużymi obrazami kontenerów. Jeśli to możliwe, zmniejsz rozmiar tych obrazów tak bardzo, jak to możliwe i zlikwiduj wszelkie niepotrzebne biblioteki.

Często obrazy danych przechodzą z fazy szkolenia do fazy wnioskowania przy użyciu tylko minimalnych modyfikacji. Pamiętaj, aby przeprowadzić inspekcję kontenerów, aby usunąć narzędzia programistyczne i zależności wymagane tylko do tworzenia modeli podczas przygotowywania kontenera do użycia wnioskowania.

Unikaj odległych rejestrów obrazów

Użyj rejestrów kontenerów w pobliżu środowiska usługi Container Apps. Zazwyczaj oznacza to, że chcesz użyć usługi Azure Container Registry wdrożonej w tym samym regionie co środowisko lub rejestru w warstwie Premium, który zawiera dystrybucję globalną.

Zarządzanie dużymi plikami do pobrania

Użyj punktów montowania pamięci, aby przechowywać dane krytyczne blisko aplikacji kontenerowej, zwłaszcza gdy rozmiary plików są duże. Jeśli na przykład Twoja aplikacja wymaga dużego modelu językowego, możesz pobrać model na konto storage. Odczytując duże pliki z konta magazynowego, można uniknąć opóźnień związanych z pobieraniem plików przez Internet.

Jeśli tworzysz instalację magazynu dla obciążeń sztucznej inteligencji, upewnij się, że używasz najbardziej odpowiednich opcji instalacji dla Twoich potrzeb.

Implementowanie niestandardowej sondy kondycji na żywo lub rozpoczynanie wczesnego nasłuchiwania

Usługa Azure Container Apps automatycznie konfiguruje sondę aktywności po włączeniu możliwości odbierania ruchu. Obrazy i aplikacje uruchamiają się długo, co po uruchomieniu obrazu może spowodować problemy z kontenerem. Usługa Container Apps może zatrzymać uruchamianą aplikację, ponieważ nie przechodzi ona sondy żywotności.

Aby zapobiec przedwczesnemu zabiciu obrazu przez usługę Container Apps, zaimplementuj niestandardową sondę liveness, aby umożliwić dłuższe procesy uruchamiania. Alternatywnie, można nasłuchiwać na dedykowanym porcie docelowym dla prostych połączeń na wcześniejszym etapie cyklu uruchamiania, aby zainicjować aplikację, gdy port zostanie otwarty.

Zakwaterowanie po stronie klienta

Czasy zimnego uruchamiania różnią się w zależności od aplikacji. Aby zmniejszyć postrzeganie tego czasu tak bardzo, jak to możliwe, dostosuj swoich klientów, aby uwzględnić opóźnienie.

Sygnalizowanie użytkownikom, że pewne żądanie może trwać dłużej i implementacja ponownych prób jest niezbędna. Możesz również wzmocnić swój kod, aby uniknąć nieoczekiwanych przekroczeń czasu, które przekraczają to, co aplikacja może płynnie obsłużyć.

Instrumentacja po stronie aplikacji

Aby rozwiązać problemy z wydajnością, zaimplementuj metryki wydajności po stronie aplikacji i rejestrowanie dla każdego etapu cyklu życia aplikacji.

Proaktywne wznawianie aplikacji

Jeśli powyższe zalecenia nie zapewniają żądanej wydajności, wybudzaj aplikację przed rzeczywistym użyciem. Na przykład, rozważ skonfigurowanie zadania o godzinie 9 rano, aby uruchomić aplikację przed rozpoczęciem przez pracowników ich dnia pracy. Takie podejście może wyeliminować długie zimne starty, jednocześnie umożliwiając skalowanie do zera oszczędności, gdy aplikacja nie jest używana.