Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W planach Zużycie, Flex Consumption i Premium usługa Azure Functions skaluje zasoby, dodając więcej wystąpień na podstawie liczby zdarzeń, które wyzwalają funkcję.
Sposób skalowania funkcji aplikacji zależy od planu hostingu:
Plan zużycia: każde wystąpienie hosta usługi Functions w planie zużycia jest ograniczone, zazwyczaj do 1,5 GB pamięci i jednego CPU. Wystąpienie hosta obsługuje całą aplikację funkcjonalną. W związku z tym wszystkie funkcje w aplikacji funkcji, które współużytkują zasoby w wystąpieniu, są skalowane w tym samym czasie. Gdy aplikacje funkcji współużytkują ten sam plan zużycia, są one nadal skalowane niezależnie.
Plan elastycznego zużycia: Plan używa deterministycznej strategii skalowania pojedynczej funkcji. Każda funkcja jest skalowana niezależnie, z wyjątkiem funkcji wyzwalanych przez protokół HTTP, blob i Durable Functions, które są skalowane we własnych grupach. Aby uzyskać więcej informacji, zobacz Skalowanie poszczególnych funkcji. Następnie te wystąpienia są skalowane w oparciu o współbieżność twoich żądań.
Plan Premium: określony rozmiar planu Premium określa dostępną pamięć i procesor CPU dla wszystkich aplikacji w tym planie w tym wystąpieniu. Plan zwiększa liczbę swoich instancji w zależności od potrzeb skalowania aplikacji w planie, a aplikacje są skalowane w ramach planu zgodnie z potrzebami.
Pliki kodu funkcji są przechowywane w udziałach Azure Files na głównym koncie magazynowym funkcji. Po usunięciu głównego konta przechowywania 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 pionie. 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 opartego na 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 dół, gdy żadna funkcja nie jest uruchomiona w aplikacji funkcji.
Diagram przedstawiający kontroler skalowania, który monitoruje zdarzenia i tworzy wystąpienia.
Zimny start
Jeśli aplikacja funkcji stanie się bezczynna na kilka minut, platforma może zdecydować się na skalowanie liczby wystąpień, na których aplikacja działa, 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 czas zimnego startu. Zimny rozruch jest większym problemem dla operacji synchronicznych, takich jak wyzwalacze HTTP, które muszą zwrócić odpowiedź. Jeśli zimne starty wpływają na funkcje, rozważ użycie planu innego niż Consumption. Inne plany oferują te strategie ograniczania lub eliminowania zimnych startów:
Plan Premium: obsługuje zarówno wystąpienia przedwarmowane, jak i zawsze gotowe wystąpienia, przy czym wspiera co najmniej jedno wystąpienie.
Plan Flex Consumption: obsługuje opcjonalną liczbę zawsze gotowych wystąpień, które można zdefiniować w oparciu o skalowanie każdego wystąpienia.
Plan dedykowany: sam plan nie jest skalowany dynamicznie, ale możesz uruchamiać aplikację w sposób ciągły, gdy ustawienie Zawsze włączone jest włączone.
Zrozumienie zachowań 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 jedynie do maksymalnej liczby dozwolonej przez plan. Jednak pojedyncze wystąpienie może przetwarzać więcej niż jeden komunikat lub żądanie jednocześnie. 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. Obecnie ta metoda skalowania jest obsługiwana w przypadku kolejek i topików Service Bus, kolejek Storage, Event Hubs, Apache Kafka i rozszerzeń Azure Cosmos DB. Upewnij się, że zapoznasz się ze skalowaniem opartym na celu, aby zrozumieć, jak działa ich skalowanie.
- Skalowanie na poziomie funkcji: Z pewnymi zauważalnymi wyjątkami, funkcje działające w planie Flex Consumption skalują się na niezależnych instancjach. Wyjątki obejmują wyzwalacze HTTP i wyzwalacze usługi Blob Storage (Event Grid). Każdy z tych typów wyzwalaczy jest skalowany razem jako grupa w tych samych wystąpieniach. Podobnie wyzwalacze wszystkich funkcji Durable Functions współdzielą wystąpienia i skalują razem. Aby uzyskać więcej informacji, zobacz skalowanie poszczególnych funkcji.
- Maksymalne monitorowane wyzwalacze: obecnie kontroler skalowania może monitorować tylko 100 wyzwalaczy w celu podejmowania decyzji dotyczących skalowania. Gdy aplikacja ma więcej niż 100 wyzwalaczy opartych na zdarzeniach, decyzje dotyczące skalowania są podejmowane na podstawie tylko pierwszych 100 wyzwalaczy, które są wykonywane. Aby uzyskać więcej informacji, zobacz Najlepsze rozwiązania i wzorce dla skalowalnych aplikacji.
Ogranicz skalowanie w poziomie
Możesz zdecydować się na ograniczenie maksymalnej liczby wystąpień, których aplikacja może użyć do skalowania w poziomie. To ograniczenie jest najczęściej stosowane w przypadkach, w których składnik podrzędny, taki jak baza danych, ma ograniczoną przepływność. Aby uzyskać maksymalne limity skalowania podczas uruchamiania różnych planów hostingu, zobacz Limity skalowania.
Plan Flexiblej Konsumpcji
Domyślnie aplikacje uruchomione w planie Flex Consumption mają limit 100 ogólnych wystąpień. Obecnie najniższą maksymalną wartością liczby wystąpień jest 40, a największą obsługiwaną maksymalną wartością liczby wystąpień jest 1000. Gdy używasz polecenia az functionapp create, aby utworzyć aplikację funkcji w planie Flex Consumption, użyj parametru --maximum-instance-count, aby ustawić maksymalną liczbę wystąpień dla aplikacji.
Chociaż można zmienić maksymalną liczbę wystąpień aplikacji Flex Consumption do 1000, osiągnięto limit przydziału dla aplikacji przed osiągnięciem tej liczby. Sprawdź Regionalne limity pamięci subskrypcji w celu uzyskania więcej szczegółów.
W tym przykładzie zostanie utworzona aplikacja z maksymalną liczbą 200wystąpień:
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage <STORAGE_ACCOUNT_NAME> --runtime <LANGUAGE_RUNTIME> --runtime-version <RUNTIME_VERSION> --flexconsumption-location <REGION> --maximum-instance-count 200
W tym przykładzie użyto az functionapp scale config set polecenia , aby zmienić maksymalną liczbę wystąpień dla istniejącej aplikacji na 150:
az functionapp scale config set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --maximum-instance-count 150
Plany zużycia/Premium
W planie Zużycie lub Elastyczny Premium możesz określić niższy maksymalny limit dla aplikacji, modyfikując wartość functionAppScaleLimit ustawienia konfiguracji witryny.
functionAppScaleLimit Można ustawić na wartość 0 lub null dla nieograniczonej, lub na prawidłową wartość między 1 a maksymalną wartością aplikacji.
az resource update --resource-type Microsoft.Web/sites -g <RESOURCE_GROUP> -n <FUNCTION_APP-NAME>/config/web --set properties.functionAppScaleLimit=<SCALE_LIMIT>
Zachowania zmniejszania skali
Skalowanie sterowane zdarzeniami automatycznie zmniejsza pojemność, gdy zapotrzebowanie na funkcje zostanie zmniejszone. Zmniejsza to poprzez opróżnienie aktualnie wykonywanych instancji funkcji, a następnie usunięcie tych instancji. 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 do 60 minut dla aplikacji planu Flex Consumption i planu Premium. Zarówno skalowanie oparte na zdarzeniach, jak i takie zachowanie nie mają zastosowania do aplikacji w planie dedykowanym.
Następujące zagadnienia dotyczą zachowań skalowanych w poziomie:
- W przypadku aplikacji działających w systemie Windows w planie Zużycia domyślnie włączone są funkcje trybu osuszania tylko dla aplikacji utworzonych po maju 2021 r.
- 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.
Skalowanie poszczególnych funkcji
Dotyczy tylko planu Flex Consumption.
Plan Flex Consumption jest unikatowy w tym, że implementuje zachowanie skalowania poszczególnych funkcji. W przypadku skalowania funkcji na podstawie poszczególnych funkcji, z wyjątkiem wyzwalaczy HTTP, wyzwalaczy Blob (Event Grid) i Durable Functions, wszystkie inne typy wyzwalaczy funkcji skalują się na niezależnych wystąpieniach. Wyzwalacze HTTP w twojej aplikacji są skalowane razem jako grupa w ramach tych samych wystąpień, podobnie jak wszystkie wyzwalacze usługi Blob (Event Grid) oraz wszelkie wyzwalacze Durable Functions, które mają swoje własne wspólne wystąpienia.
Rozważ aplikację funkcji hostowaną przez plan Flex Consumption, która ma następujące funkcje:
| function1 | funkcja2 | funkcja3 | funkcja4 | function5 | funkcja6 | function7 |
|---|---|---|---|---|---|---|
| Wyzwalacz HTTP | Wyzwalacz HTTP | Wyzwalacz orkiestracji (Stały) | Wyzwalacz działania (trwały) | Wyzwalacz usługi Service Bus | Wyzwalacz usługi Service Bus | Wyzwalacz Event Hubs |
W tym przykładzie:
- Dwie funkcje wyzwalane przez protokół HTTP (
function1ifunction2) są uruchamiane razem we własnych wystąpieniach i są skalowane razem zgodnie z ustawieniami współbieżności HTTP. - Obie funkcje Durable (
function3ifunction4) są uruchamiane razem we własnych wystąpieniach i są skalowane razem w oparciu o skonfigurowane ograniczenia współbieżności. - Funkcja wyzwalana przez usługę
function5Service Bus działa samodzielnie i jest skalowana niezależnie zgodnie z docelowymi regułami skalowania dla kolejek i tematów usługi Service Bus. - Funkcja wyzwalana przez usługę
function6Service Bus działa samodzielnie i jest skalowana niezależnie zgodnie z docelowymi regułami skalowania dla kolejek i tematów usługi Service Bus. - Wyzwalacz usługi Event Hubs (
function7) działa we własnych wystąpieniach i jest skalowany niezależnie zgodnie z docelowymi regułami skalowania dla usługi Event Hubs.
Najlepsze rozwiązania i wzorce dla skalowalnych aplikacji
Istnieje wiele aspektów aplikacji funkcjonalnej, które mają wpływ na sposób jej skalowania, w tym konfiguracja hosta, zajętość środowiska uruchomieniowego oraz wydajność wykorzystania 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.
Jeśli aplikacja ma więcej niż 100 funkcji korzystających z wyzwalaczy opartych na zdarzeniach, rozważ podzielenie aplikacji na co najmniej jedną aplikację, gdzie każda aplikacja ma mniej niż 100 funkcji opartych na zdarzeniach.
Aby uzyskać więcej informacji na temat skalowania w języku Python i Node.js, zobacz sekcję Scaling and performance (Skalowanie i wydajność ) w przewodniku dla deweloperów usługi Azure Functions w języku Python oraz w sekcji Scaling and concurrency (Skalowanie i współbieżność ) przewodnika dla deweloperów usługi Azure Functions Node.js.
Następne kroki
Więcej informacji można znaleźć w następujących artykułach: