Skalowanie sterowane zdarzeniami w usłudze Azure Functions

W planach Zużycie i Premium usługa Azure Functions skaluje zasoby procesora CPU i pamięci przez dodanie kolejnych wystąpień hosta usługi Functions. Liczba wystąpień jest określana na liczbę zdarzeń, które wyzwalają funkcję.

Każde wystąpienie hosta usługi Functions w planie Zużycie jest ograniczone, zazwyczaj do 1,5 GB pamięci i jednego procesora CPU. Wystąpienie hosta jest całą aplikacją funkcji, co oznacza, że wszystkie funkcje w aplikacji funkcji współużytkować zasób w ramach wystąpienia i skalować w tym samym czasie. Aplikacje funkcji współużytkujące ten sam plan zużycia są skalowane niezależnie. W planie Premium rozmiar planu określa dostępną pamięć i procesor CPU dla wszystkich aplikacji w tym planie w tym wystąpieniu.

Pliki kodu funkcji są przechowywane w udziałach usługi Azure Files na głównym koncie magazynu funkcji. Po usunięciu głównego konta magazynu aplikacji funkcji pliki kodu funkcji są usuwane i nie można ich odzyskać.

Skalowanie środowiska uruchomieniowego

Usługa Azure Functions używa składnika o nazwie kontroler skalowania do monitorowania szybkości zdarzeń i określania, czy skalować w poziomie, czy skalować w poziomie. Kontroler skalowania używa heurystyki dla każdego typu wyzwalacza. Jeśli na przykład używasz wyzwalacza usługi Azure Queue Storage, używa ona skalowania na podstawie celu.

Jednostką skalowania dla usługi Azure Functions jest aplikacja funkcji. Gdy aplikacja funkcji jest skalowana w poziomie, więcej zasobów jest przydzielanych do uruchamiania wielu wystąpień hosta usługi Azure Functions. Z drugiej strony, gdy zapotrzebowanie na zasoby obliczeniowe spada, kontroler skalowania usuwa wystąpienia hosta funkcji. Liczba wystąpień jest ostatecznie "skalowana w", gdy żadne funkcje nie są uruchomione w aplikacji funkcji.

Scale controller monitoring events and creating instances

Zimny start

Po bezczynności aplikacji funkcji przez kilka minut platforma może skalować liczbę wystąpień, na których aplikacja działa do zera. Następne żądanie ma dodane opóźnienie skalowania z zera do jednego. To opóźnienie jest określane jako zimny start. Liczba zależności wymaganych przez aplikację funkcji może mieć wpływ na zimny czas rozpoczęcia. Zimny start jest bardziej problemem dla operacji synchronicznych, takich jak wyzwalacze HTTP, które muszą zwrócić odpowiedź. Jeśli zimne starty wpływają na funkcje, rozważ uruchomienie planu Premium lub w planie dedykowanym z włączonym ustawieniem Zawsze włączone.

Informacje o zachowaniach skalowania

Skalowanie może się różnić w zależności od kilku czynników, a aplikacje są skalowane inaczej na podstawie wybranych wyzwalaczy i języka. Istnieje kilka zawiłości dotyczących zachowań skalowania, o których należy pamiętać:

  • Maksymalna liczba wystąpień: pojedyncza aplikacja funkcji jest skalowana w poziomie do maksymalnej dozwolonej przez plan. Aczkolwiek pojedyncze wystąpienie może przetwarzać w danym momencie więcej niż jeden komunikat lub żądanie, dlatego nie ma określonego limitu liczby współbieżnych wykonań. Możesz określić niższą maksymalną skalę ograniczania zgodnie z potrzebami.
  • Szybkość nowego wystąpienia: w przypadku wyzwalaczy HTTP nowe wystąpienia są przydzielane co najwyżej raz na sekundę. W przypadku innych wyzwalaczy, niż protokołu HTTP, nowe wystąpienia są przydzielane najwyżej raz na 30 sekund. Skalowanie jest szybsze, gdy jest uruchamiane w planie Premium.
  • Skalowanie na podstawie celu: skalowanie na podstawie celu zapewnia szybki i intuicyjny model skalowania dla klientów i jest obecnie obsługiwany w przypadku kolejek i tematów usługi Service Bus, kolejek magazynu, usługi Event Hubs i rozszerzeń usługi Cosmos DB. Pamiętaj, aby zapoznać się ze skalowaniem opartym na obiekcie docelowym, aby zrozumieć ich zachowanie skalowania.

Ograniczanie skalowania w poziomie

Możesz ograniczyć maksymalną liczbę wystąpień używanych do skalowania w poziomie. Jest to najczęściej spotykane w przypadkach, w których składnik podrzędny, taki jak baza danych, ma ograniczoną przepływność. Domyślnie funkcje planu zużycie są skalowane w poziomie do 200 wystąpień, a funkcje planu Premium będą skalowane w poziomie do 100 wystąpień. Możesz określić niższą maksymalną wartość dla określonej aplikacji, modyfikując functionAppScaleLimit wartość. functionAppScaleLimit Można ustawić 0 wartość na lub null dla nieograniczonej lub prawidłową wartość między 1 i maksymalną aplikacją.

az resource update --resource-type Microsoft.Web/sites -g <RESOURCE_GROUP> -n <FUNCTION_APP-NAME>/config/web --set properties.functionAppScaleLimit=<SCALE_LIMIT>

Zachowania skalowania w poziomie

Skalowanie sterowane zdarzeniami automatycznie zmniejsza pojemność, gdy zapotrzebowanie na funkcje zostanie zmniejszone. Robi to przez opróżnianie wystąpień ich bieżących wykonań funkcji, a następnie usunięcie tych wystąpień. To zachowanie jest rejestrowane jako tryb opróżniania. Okres prolongaty dla funkcji, które są obecnie wykonywane, może wydłużyć się do 10 minut dla aplikacji planu zużycie i maksymalnie 60 minut dla aplikacji planu Premium. Skalowanie oparte na zdarzeniach i takie zachowanie nie ma zastosowania do aplikacji w planie dedykowanym.

Następujące zagadnienia dotyczą zachowań skalowanych w poziomie:

  • W przypadku aplikacji funkcji planu zużycie działających w systemie Windows tylko aplikacje utworzone po maju 2021 r. mają domyślnie włączone zachowania trybu opróżniania.
  • Aby włączyć bezpieczne zamykanie funkcji przy użyciu wyzwalacza usługi Service Bus, użyj wersji 4.2.0 lub nowszej wersji rozszerzenia usługi Service Bus.

Najlepsze rozwiązania i wzorce dla skalowalnych aplikacji

Istnieje wiele aspektów aplikacji funkcji, które mają wpływ na sposób skalowania, w tym konfigurację hosta, ślad środowiska uruchomieniowego i wydajność zasobów. Aby uzyskać więcej informacji, zobacz sekcję dotyczącą skalowalności w artykule dotyczącym zagadnień dotyczących wydajności. Należy również pamiętać o tym, jak połączenia zachowują się w miarę skalowania aplikacji funkcji. Aby uzyskać więcej informacji, zobacz Jak zarządzać połączeniami w usłudze Azure Functions.

Aby uzyskać więcej informacji na temat skalowania w języku Python i Node.js, zobacz Przewodnik dla deweloperów języka Python dotyczący skalowania i współbieżności oraz usługi Azure Functions Node.js — przewodnik dla deweloperów — skalowanie i współbieżność.

Model rozliczania

Rozliczenia dla różnych planów zostały szczegółowo opisane na stronie cennika usługi Azure Functions. Użycie jest agregowane na poziomie aplikacji funkcji i liczy tylko czas wykonywania kodu funkcji. Poniżej przedstawiono jednostki rozliczeń:

  • Użycie zasobów w gigabajtach (GB-s). Obliczone jako kombinacja rozmiaru pamięci i czasu wykonywania dla wszystkich funkcji w aplikacji funkcji.
  • Wykonania. Liczone za każdym razem, gdy funkcja jest wykonywana w odpowiedzi na wyzwalacz zdarzenia.

Przydatne zapytania i informacje na temat sposobu zrozumienia rachunku za użycie można znaleźć w często zadawanych pytaniach dotyczących rozliczeń.

Następne kroki

Więcej informacji można znaleźć w następujących artykułach: