Skalowanie i hosting usługi Azure FunctionsAzure Functions scale and hosting

Podczas tworzenia aplikacji funkcji na platformie Azure musisz wybrać plan hostingu dla swojej aplikacji.When you create a function app in Azure, you must choose a hosting plan for your app. Istnieją trzy podstawowe plany hostingu dostępne dla Azure Functions: Plan zużycia, Plan Premiumi dedykowany plan (App Service).There are three basic hosting plans available for Azure Functions: Consumption plan, Premium plan, and Dedicated (App Service) plan. Wszystkie plany hostingu są ogólnie dostępne (GA) na maszynach wirtualnych z systemem Linux i Windows.All hosting plans are generally available (GA) on both Linux and Windows virtual machines.

Wybrany plan hostingu wymusza następujące zachowania:The hosting plan you choose dictates the following behaviors:

  • Sposób skalowania aplikacji funkcji.How your function app is scaled.
  • Zasoby dostępne dla każdego wystąpienia aplikacji funkcji.The resources available to each function app instance.
  • Obsługa zaawansowanych funkcji, takich jak łączność z platformą Azure Virtual Network.Support for advanced features, such as Azure Virtual Network connectivity.

Plany zużycia i Premium automatycznie dodają moc obliczeniową, gdy kod jest uruchomiony.Both Consumption and Premium plans automatically add compute power when your code is running. Aplikacja jest skalowana w poziomie, gdy jest wymagana do obsługi obciążenia i skalowana w czasie, gdy kod przestanie działać.Your app is scaled out when needed to handle load, and scaled in when code stops running. W przypadku planu zużycia nie trzeba również uiszczać opłat za bezczynne maszyny wirtualne lub zarezerwować pojemność.For the Consumption plan, you also don't have to pay for idle VMs or reserve capacity in advance.

Plan Premium oferuje dodatkowe funkcje, takie jak wystąpienia obliczeniowe w warstwie Premium, możliwość utrzymywania nieokreślonych wystąpień i łączności między sieciami wirtualnymi.Premium plan provides additional features, such as premium compute instances, the ability to keep instances warm indefinitely, and VNet connectivity.

Plan App Service umożliwia korzystanie z dedykowanej infrastruktury zarządzanej przez użytkownika.App Service plan allows you to take advantage of dedicated infrastructure, which you manage. Aplikacja funkcji nie jest skalowana na podstawie zdarzeń, co oznacza, że nigdy nie skaluje się do zera.Your function app doesn't scale based on events, which means it never scales in to zero. (Wymaga, aby zawsze włączony).(Requires that Always on is enabled.)

Aby uzyskać szczegółowe porównanie między różnymi planami hostingu (w tym hostingiem opartym na Kubernetes), zobacz sekcję porównanie planów hostingu.For a detailed comparison between the various hosting plans (including Kubernetes-based hosting), see the Hosting plans comparison section.

Plan ZużycieConsumption plan

Gdy używasz planu zużycia, wystąpienia hosta Azure Functions są dynamicznie dodawane i usuwane na podstawie liczby zdarzeń przychodzących.When you're using the Consumption plan, instances of the Azure Functions host are dynamically added and removed based on the number of incoming events. Ten plan bezserwerowy wykorzystuje automatyczne skalowanie, a opłaty są naliczane za zasoby obliczeniowe tylko wtedy, gdy funkcje są uruchamiane.This serverless plan scales automatically, and you're charged for compute resources only when your functions are running. W ramach Planu użycia limit czasu wykonywania funkcji zostaje przekroczony po konfigurowalnym okresie czasu.On a Consumption plan, a function execution times out after a configurable period of time.

Rozliczenia zależą od liczby wykonań, czasu wykonania oraz użytej pamięci.Billing is based on number of executions, execution time, and memory used. Użycie jest agregowane we wszystkich funkcjach w ramach aplikacji funkcji.Usage is aggregated across all functions within a function app. Aby uzyskać więcej informacji, zobacz stronę z cennikiem Azure Functions.For more information, see the Azure Functions pricing page.

Plan zużycia jest domyślnym planem hostingu i oferuje następujące korzyści:The Consumption plan is the default hosting plan and offers the following benefits:

  • Płacisz tylko wtedy, gdy funkcje są uruchomionePay only when your functions are running
  • Automatyczne skalowanie w poziomie, nawet w okresach dużego obciążeniaScale out automatically, even during periods of high load

Aplikacje funkcji w tym samym regionie mogą być przypisane do tego samego planu zużycia.Function apps in the same region can be assigned to the same Consumption plan. Nie ma Minusem ani wpływu na wiele aplikacji uruchomionych w tym samym planie zużycia.There's no downside or impact to having multiple apps running in the same Consumption plan. Przypisywanie wielu aplikacji do tego samego planu zużycia nie ma wpływu na odporność, skalowalność ani niezawodność każdej aplikacji.Assigning multiple apps to the same Consumption plan has no impact on resilience, scalability, or reliability of each app.

Aby dowiedzieć się więcej na temat szacowania kosztów podczas pracy w planie zużycia, zobacz Opis kosztów planu zużycia.To learn more about how to estimate costs when running in a Consumption plan, see Understanding Consumption plan costs.

Plan PremiumPremium plan

W przypadku korzystania z planu Premium wystąpienia hosta Azure Functions są dodawane i usuwane na podstawie liczby zdarzeń przychodzących, podobnie jak w przypadku planu zużycia.When you're using the Premium plan, instances of the Azure Functions host are added and removed based on the number of incoming events just like the Consumption plan. Plan Premium obsługuje następujące funkcje:Premium plan supports the following features:

  • Bezterminowo podgrzewane wystąpienia, aby uniknąć dowolnego zimnego startuPerpetually warm instances to avoid any cold start
  • Łączność z siecią wirtualnąVNet connectivity
  • Nieograniczony czas wykonywania (gwarantowane 60 minut)Unlimited execution duration (60 minutes guaranteed)
  • Rozmiary wystąpienia Premium (jeden rdzeń, dwa rdzenie i cztery podstawowe wystąpienia)Premium instance sizes (one core, two core, and four core instances)
  • Bardziej przewidywalny CennikMore predictable pricing
  • Alokacja aplikacji o wysokiej gęstości dla planów z wieloma aplikacjami funkcjiHigh-density app allocation for plans with multiple function apps

Aby dowiedzieć się, jak utworzyć aplikację funkcji w planie Premium, zobacz Azure Functions plan Premium.To learn how you can create a function app in a Premium plan, see Azure Functions Premium plan.

Zamiast naliczania opłat za wykonanie i zużywaną pamięć, rozliczenia dla planu Premium bazują na liczbie podstawowych sekund i ilości pamięci przydzieloną między wystąpieniami.Instead of billing per execution and memory consumed, billing for the Premium plan is based on the number of core seconds and memory allocated across instances. Z planem Premium nie jest naliczana opłata za wykonanie.There is no execution charge with the Premium plan. Co najmniej jedno wystąpienie musi być przydzieloną przez cały czas dla każdego planu.At least one instance must be allocated at all times per plan. Powoduje to minimalny miesięczny koszt według aktywnego planu, niezależnie od tego, czy funkcja jest aktywna, czy bezczynna.This results in a minimum monthly cost per active plan, regardless if the function is active or idle. Należy pamiętać, że wszystkie aplikacje funkcji w planie Premium współdzielą wystąpienia przydzielono.Keep in mind that all function apps in a Premium plan share allocated instances.

Zapoznaj się z planem Azure Functions Premium w następujących sytuacjach:Consider the Azure Functions Premium plan in the following situations:

  • Aplikacje funkcji działają w sposób ciągły lub niemal nieustannie.Your function apps run continuously, or nearly continuously.
  • Masz dużą liczbę niewielkich wykonań i masz rozliczenie o dużym obciążeniu, ale niski GB drugiego rachunku w planie zużycia.You have a high number of small executions and have a high execution bill but low GB second bill in the Consumption plan.
  • Potrzebujesz więcej opcji dotyczących procesora CPU lub pamięci niż to, co jest dostępne w ramach planu zużycia.You need more CPU or memory options than what is provided by the Consumption plan.
  • Twój kod musi działać dłużej niż Maksymalny dozwolony czas wykonywania w planie zużycia.Your code needs to run longer than the maximum execution time allowed on the Consumption plan.
  • Wymagane są funkcje, które są dostępne tylko w planie Premium, takie jak łączność sieci wirtualnej.You require features that are only available on a Premium plan, such as virtual network connectivity.

Plan dedykowany (App Service)Dedicated (App Service) plan

Aplikacje funkcji można również uruchamiać na tych samych dedykowanych maszynach wirtualnych, co inne aplikacje App Service (wersje Basic, standard, Premium i izolowane).Your function apps can also run on the same dedicated VMs as other App Service apps (Basic, Standard, Premium, and Isolated SKUs).

Należy wziąć pod uwagę plan App Service w następujących sytuacjach:Consider an App Service plan in the following situations:

  • Istnieją już istniejące, nieużywane maszyny wirtualne, na których uruchomiono inne wystąpienia App Service.You have existing, underutilized VMs that are already running other App Service instances.
  • Chcesz udostępnić niestandardowy obraz, na którym będą uruchamiane funkcje.You want to provide a custom image on which to run your functions.

Płacisz za aplikacje funkcji w planie App Service, tak jak w przypadku innych zasobów App Service, takich jak aplikacje sieci Web.You pay the same for function apps in an App Service Plan as you would for other App Service resources, like web apps. Aby uzyskać szczegółowe informacje na temat działania planu App Service, zobacz szczegółowe Omówienie planów Azure App Service.For details about how the App Service plan works, see the Azure App Service plans in-depth overview.

Korzystając z planu App Service, można ręcznie skalować w poziomie, dodając więcej wystąpień maszyn wirtualnych.Using an App Service plan, you can manually scale out by adding more VM instances. Możesz również włączyć funkcję automatycznego skalowania, chociaż automatyczne skalowanie będzie wolniejsze niż elastyczne skalowanie planu Premium.You can also enable autoscale, though autoscale will be slower than the elastic scale of the Premium plan. Aby uzyskać więcej informacji, zobacz Ręczne lub automatyczne skalowanie liczby wystąpień.For more information, see Scale instance count manually or automatically. Możesz również skalować w górę, wybierając inny plan App Service.You can also scale up by choosing a different App Service plan. Aby uzyskać więcej informacji, zobacz skalowanie w górę aplikacji na platformie Azure.For more information, see Scale up an app in Azure.

Podczas uruchamiania funkcji JavaScript w planie App Service należy wybrać plan, który ma mniej procesorów wirtualnych vCPU.When running JavaScript functions on an App Service plan, you should choose a plan that has fewer vCPUs. Aby uzyskać więcej informacji, zobacz Wybieranie planów App Service z pojedynczym rdzeniem.For more information, see Choose single-core App Service plans.

Uruchamianie w App Service Environment (ASE) pozwala w pełni izolować funkcje i korzystać z większej liczby wystąpień niż plan App Service.Running in an App Service Environment (ASE) lets you fully isolate your functions and take advantage of higher number of instances than an App Service Plan.

Zawsze włączoneAlways On

Jeśli uruchamiasz plan App Service, należy włączyć ustawienie zawsze włączone, aby aplikacja funkcji działała poprawnie.If you run on an App Service plan, you should enable the Always on setting so that your function app runs correctly. W planie App Service środowisko uruchomieniowe funkcji przechodzi w stan bezczynności po kilku minutach braku aktywności, więc tylko Wyzwalacze HTTP będą wznawiać działanie funkcji.On an App Service plan, the functions runtime goes idle after a few minutes of inactivity, so only HTTP triggers will "wake up" your functions. Zawsze włączone jest dostępne tylko w planie App Service.Always on is available only on an App Service plan. Zgodnie z planem zużycia platforma automatycznie aktywuje aplikacje funkcji.On a Consumption plan, the platform activates function apps automatically.

Czas trwania aplikacji funkcjiFunction app timeout duration

Czas trwania aplikacji funkcji jest definiowany przez functionTimeout Właściwość w host.jsw pliku projektu.The timeout duration of a function app is defined by the functionTimeout property in the host.json project file. W poniższej tabeli przedstawiono wartości domyślne i maksymalne w minutach dla obu planów i różnych wersji środowiska uruchomieniowego:The following table shows the default and maximum values in minutes for both plans and the different runtime versions:

PlanowaniePlan Wersja środowiska uruchomieniowegoRuntime Version DomyślneDefault MaksimumMaximum
ZużycieConsumption 1.x1.x 55 1010
ZużycieConsumption 2.x2.x 55 1010
ZużycieConsumption wersji3.x 55 1010
PremiumPremium 1.x1.x 3030 Nieograniczona liczbaUnlimited
PremiumPremium 2.x2.x 3030 Nieograniczona liczbaUnlimited
PremiumPremium wersji3.x 3030 Nieograniczona liczbaUnlimited
App ServiceApp Service 1.x1.x Nieograniczona liczbaUnlimited Nieograniczona liczbaUnlimited
App ServiceApp Service 2.x2.x 3030 Nieograniczona liczbaUnlimited
App ServiceApp Service wersji3.x 3030 Nieograniczona liczbaUnlimited

Uwaga

Niezależnie od ustawienia limitu czasu aplikacji funkcji, 230 sekund to maksymalny czas, jaki może wykonać funkcja wyzwalana przez protokół HTTP w celu odpowiedzi na żądanie.Regardless of the function app timeout setting, 230 seconds is the maximum amount of time that an HTTP triggered function can take to respond to a request. Jest to spowodowane domyślnym limitem czasu bezczynności wynoszącym Azure Load Balancer.This is because of the default idle timeout of Azure Load Balancer. Aby wydłużyć czas przetwarzania, rozważ użycie wzorca Durable Functions Async lub odroczenie rzeczywistej pracy i zwrócenie natychmiastowej odpowiedzi.For longer processing times, consider using the Durable Functions async pattern or defer the actual work and return an immediate response.

Nawet przy włączonej opcji zawsze włączone przekroczenie limitu czasu wykonywania poszczególnych funkcji jest kontrolowane przez functionTimeout ustawienie w host.jsw pliku projektu.Even with Always On enabled, the execution timeout for individual functions is controlled by the functionTimeout setting in the host.json project file.

Określanie planu hostingu istniejącej aplikacjiDetermine the hosting plan of an existing application

Aby określić plan hostingu używany przez aplikację funkcji, zapoznaj się z tematem App Service plan na karcie Przegląd dla aplikacji funkcji w Azure Portal.To determine the hosting plan used by your function app, see App Service plan in the Overview tab for the function app in the Azure portal. Aby wyświetlić warstwę cenową, wybierz nazwę planu App Service, a następnie wybierz pozycję Właściwości w okienku po lewej stronie.To see the pricing tier, select the name of the App Service Plan, and then select Properties from the left pane.

Wyświetlanie planu skalowania w portalu

Możesz również użyć interfejsu wiersza polecenia platformy Azure, aby określić plan w następujący sposób:You can also use the Azure CLI to determine the plan, as follows:

appServicePlanId=$(az functionapp show --name <my_function_app_name> --resource-group <my_resource_group> --query appServicePlanId --output tsv)
az appservice plan list --query "[?id=='$appServicePlanId'].sku.tier" --output tsv

Gdy dane wyjściowe tego polecenia to dynamic , aplikacja funkcji jest w planie zużycia.When the output from this command is dynamic, your function app is in the Consumption plan. Gdy dane wyjściowe tego polecenia to ElasticPremium , aplikacja funkcji jest w planie Premium.When the output from this command is ElasticPremium, your function app is in the Premium plan. Wszystkie inne wartości wskazują różne warstwy planu App Service.All other values indicate different tiers of an App Service plan.

Wymagania konta magazynuStorage account requirements

W każdym planie aplikacja funkcji wymaga konta usługi Azure Storage, które obsługuje obiekty blob, kolejki, pliki i tabele usługi Azure Storage.On any plan, a function app requires a general Azure Storage account, which supports Azure Blob, Queue, Files, and Table storage. Jest to spowodowane tym, że Azure Functions opiera się na usłudze Azure Storage na potrzeby operacji takich jak zarządzanie wyzwalaczami i rejestrowanie wykonań funkcji, ale niektóre konta magazynu nie obsługują kolejek i tabel.This is because Azure Functions relies on Azure Storage for operations such as managing triggers and logging function executions, but some storage accounts don't support queues and tables. Te konta, które obejmują konta magazynu tylko obiektów BLOB (w tym magazyn Premium Storage) i konta magazynu ogólnego przeznaczenia z replikacją magazynu w strefie nadmiarowej, są odfiltrowane z istniejących ustawień konta magazynu podczas tworzenia aplikacji funkcji.These accounts, which include blob-only storage accounts (including premium storage) and general-purpose storage accounts with zone-redundant storage replication, are filtered-out from your existing Storage Account selections when you create a function app.

To samo konto magazynu używane przez aplikację funkcji może być również używane przez wyzwalacze i powiązania do przechowywania danych aplikacji.The same storage account used by your function app can also be used by your triggers and bindings to store your application data. Jednak w przypadku operacji intensywnie korzystających z magazynu należy użyć oddzielnego konta magazynu.However, for storage-intensive operations, you should use a separate storage account.

Istnieje możliwość udostępnienia tego samego konta magazynu dla wielu aplikacji funkcji bez żadnych problemów.It's possible for multiple function apps to share the same storage account without any issues. (Dobrym przykładem jest to, że podczas tworzenia wielu aplikacji w środowisku lokalnym przy użyciu emulatora usługi Azure Storage, który działa jak jedno konto magazynu).(A good example of this is when you develop multiple apps in your local environment using the Azure Storage Emulator, which acts like one storage account.)

Aby dowiedzieć się więcej na temat typów kont magazynu, zobacz wprowadzenie do usług Azure Storage.To learn more about storage account types, see Introducing the Azure Storage services.

W miejscu zamieszkania danych regionuIn Region Data Residency

Gdy to konieczne, aby wszystkie dane klienta pozostawały w jednym regionie, konto magazynu skojarzone z aplikacją funkcji musi być jednym z nadmiarowości w regionie.When necessary for all customer data to remain within a single region, the storage account associated with the function app must be one with in region redundancy. Konto magazynu nadmiarowego w regionie musi być również używane z usługą Azure Durable Functions dla Durable Functions.An in-region redundant storage account would also need to be used with Azure Durable Functions for Durable Functions.

Inne dane klienta zarządzane przez platformę będą przechowywane w regionie tylko podczas hostowania w ramach wewnętrznego Load Balancer App Service Environment (lub ILB ASE).Other platform-managed customer data will only be stored within the region when hosting in an Internal Load Balancer App Service Environment (or ILB ASE). Szczegóły można znaleźć w obszarze nadmiarowości stref środowiska ASE.Details can be found in ASE zone redundancy.

Jak działają plany Zużycie i PremiumHow the Consumption and Premium plans work

W planach zużycia i Premium infrastruktura Azure Functions skaluje zasoby procesora i pamięci, dodając kolejne wystąpienia hosta funkcji na podstawie liczby zdarzeń wyzwalanych przez jej funkcje.In the Consumption and Premium plans, the Azure Functions infrastructure scales CPU and memory resources by adding additional instances of the Functions host, based on the number of events that its functions are triggered on. Każde wystąpienie hosta funkcji w planie zużycia jest ograniczone do 1,5 GB pamięci i jednego procesora CPU.Each instance of the Functions host in the Consumption plan is limited to 1.5 GB of memory and one CPU. Wystąpieniem hosta jest cała aplikacja funkcji, co oznacza, że wszystkie funkcje w ramach zasobu funkcji udział aplikacji w ramach wystąpienia i skalowania w tym samym czasie.An instance of the host is the entire function app, meaning all functions within a function app share resource within an instance and scale at the same time. Aplikacje funkcji, które współużytkują ten sam plan zużycia, są skalowane niezależnie.Function apps that share the same Consumption plan are scaled independently. W planie Premium rozmiar planu określi dostępną pamięć i procesor dla wszystkich aplikacji w tym wystąpieniu.In the Premium plan, your plan size will determine the available memory and CPU for all apps in that plan on that instance.

Pliki kodu funkcji są przechowywane w udziałach Azure Files na głównym koncie magazynu funkcji.Function code files are stored on Azure Files shares on the function's main storage account. Po usunięciu głównego konta magazynu aplikacji funkcji pliki kodu funkcji zostaną usunięte i nie będzie można go odzyskać.When you delete the main storage account of the function app, the function code files are deleted and cannot be recovered.

Skalowanie środowiska uruchomieniowegoRuntime scaling

Azure Functions używa składnika zwanego kontrolerem skalowania , aby monitorować częstotliwość zdarzeń i określać, czy skalować w poziomie, czy skalować w poziomie.Azure Functions uses a component called the scale controller to monitor the rate of events and determine whether to scale out or scale in. Kontroler skalowania używa algorytmów heurystycznych dla każdego typu wyzwalacza.The scale controller uses heuristics for each trigger type. Na przykład podczas korzystania z wyzwalacza usługi Azure queue storage skaluje się w zależności od długości kolejki i wieku najstarszej wiadomości w kolejce.For example, when you're using an Azure Queue storage trigger, it scales based on the queue length and the age of the oldest queue message.

Jednostką skalowania Azure Functions jest aplikacja funkcji.The unit of scale for Azure Functions is the function app. Gdy aplikacja funkcji jest skalowana w poziomie, dodatkowe zasoby są przydzieleni do uruchamiania wielu wystąpień hosta Azure Functions.When the function app is scaled out, additional resources are allocated to run multiple instances of the Azure Functions host. Z drugiej strony, ponieważ zapotrzebowanie obliczeniowe jest ograniczone, kontroler skalowania usuwa wystąpienia hosta funkcji.Conversely, as compute demand is reduced, the scale controller removes function host instances. Liczba wystąpień jest ostatecznie skalowana do zera, gdy żadne funkcje nie działają w ramach aplikacji funkcji.The number of instances is eventually scaled in to zero when no functions are running within a function app.

Skalowanie zdarzeń monitorowania kontrolera i Tworzenie wystąpień

Zimne uruchomienieCold Start

Gdy aplikacja funkcji jest bezczynna przez kilka minut, platforma może skalować liczbę wystąpień, na których aplikacja jest uruchamiana na zero.After your function app has been idle for a number of minutes, the platform may scale the number of instances on which your app runs down to zero. Następne żądanie ma dodanie opóźnienia skalowania od zera do jednego.The next request has the added latency of scaling from zero to one. To opóźnienie jest określane jako zimne uruchomienie.This latency is referred to as a cold start. Liczba zależności, które muszą zostać załadowane przez aplikację funkcji, może mieć wpływ na zimny czas rozpoczęcia.The number of dependencies that must be loaded by your function app can impact the cold start time. Zimny start to więcej problemu w przypadku operacji synchronicznych, takich jak wyzwalacze HTTP, które muszą zwrócić odpowiedź.Cold start is more of an issue for synchronous operations, such as HTTP triggers that must return a response. Jeśli zimne uruchomienie ma wpływ na funkcje, należy rozważyć uruchomienie w planie Premium lub w dedykowanym planie z funkcją zawsze włączone.If cold starts are impacting your functions, consider running in a Premium plan or in a Dedicated plan with Always on enabled.

Zrozumienie zachowań skalowaniaUnderstanding scaling behaviors

Skalowanie może się różnić w zależności od liczby czynników i skalować w różny sposób w zależności od wybranego wyzwalacza i języka.Scaling can vary on a number of factors, and scale differently based on the trigger and language selected. Istnieje kilka złożonego zachowań do skalowania:There are a few intricacies of scaling behaviors to be aware of:

  • Pojedyncza aplikacja funkcji jest skalowana tylko do maksymalnie 200 wystąpień.A single function app only scales out to a maximum of 200 instances. Pojedyncze wystąpienie może przetwarzać więcej niż jeden komunikat lub żądanie w tym samym czasie, więc nie ma ustawionego limitu liczby współbieżnych wykonań.A single instance may process more than one message or request at a time though, so there isn't a set limit on number of concurrent executions. Możesz określić niższą maksymalną przepustowość, aby ograniczyć skalę w miarę potrzeb.You can specify a lower maximum to throttle scale as required.
  • W przypadku wyzwalaczy HTTP nowe wystąpienia są przydzielono maksymalnie raz na sekundę.For HTTP triggers, new instances are allocated, at most, once per second.
  • W przypadku wyzwalaczy nie korzystających z protokołu HTTP nowe wystąpienia są przydzielono co najwyżej, co 30 sekund.For non-HTTP triggers, new instances are allocated, at most, once every 30 seconds. Skalowanie jest szybsze, gdy działa w planie Premium.Scaling is faster when running in a Premium plan.
  • W przypadku wyzwalaczy Service Bus Użyj zarządzania prawami do zasobów, aby uzyskać najbardziej wydajne skalowanie.For Service Bus triggers, use Manage rights on resources for the most efficient scaling. W przypadku praw nasłuchu skalowanie nie jest tak dokładne, ponieważ długość kolejki nie może być używana do informowania o decyzjach o skalowaniu.With Listen rights, scaling isn't as accurate because the queue length can't be used to inform scaling decisions. Aby dowiedzieć się więcej o ustawianiu uprawnień Service Bus zasad dostępu, zobacz zasady autoryzacji dostępu współdzielonego.To learn more about setting rights in Service Bus access policies, see Shared Access Authorization Policy.
  • Aby uzyskać informacje na temat wyzwalaczy centrum zdarzeń, zobacz wskazówki dotyczące skalowania w artykule referencyjnym.For Event Hub triggers, see the scaling guidance in the reference article.

Ogranicz skalowanie w poziomieLimit scale out

Możesz ograniczyć liczbę wystąpień aplikacji do skalowania w dół.You may wish to restrict the number of instances an app scales out to. Jest to najbardziej typowe w przypadku, gdy składnik podrzędny, taki jak baza danych, ma ograniczoną przepływność.This is most common for cases where a downstream component like a database has limited throughput. Domyślnie funkcje planu zużycia będą skalowane w poziomie do maksymalnie 200 wystąpień, a funkcje planu Premium będą skalowane do maksymalnie 100 wystąpień.By default, consumption plan functions will scale out to as many as 200 instances, and premium plan functions will scale out to as many as 100 instances. Możesz określić niższą wartość maksymalną dla konkretnej aplikacji, modyfikując ją functionAppScaleLimit .You can specify a lower maximum for a specific app by modifying the functionAppScaleLimit value. Wartość functionAppScaleLimit można ustawić na 0 lub null dla nieograniczonej lub prawidłowej wartości z przedziału od 1 do maksimum aplikacji.The functionAppScaleLimit can be set to 0 or null for unrestricted, or a valid value between 1 and the app maximum.

az resource update --resource-type Microsoft.Web/sites -g <resource_group> -n <function_app_name>/config/web --set properties.functionAppScaleLimit=<scale_limit>

Najlepsze rozwiązania i wzorce dotyczące skalowalnych aplikacjiBest practices and patterns for scalable apps

Istnieje wiele aspektów aplikacji funkcji, która będzie miała wpływ na wydajność skalowania, w tym konfigurację hosta, rozmiar środowiska uruchomieniowego i efektywność zasobów.There are many aspects of a function app that will impact how well it will scale, including host configuration, runtime footprint, and resource efficiency. Aby uzyskać więcej informacji, zobacz sekcję skalowalność artykułu zagadnienia dotyczące wydajności.For more information, see the scalability section of the performance considerations article. Należy również wiedzieć, jak połączenia działają w miarę skalowania aplikacji funkcji.You should also be aware of how connections behave as your function app scales. Aby uzyskać więcej informacji, zobacz jak zarządzać połączeniami w Azure Functions.For more information, see How to manage connections in Azure Functions.

Aby uzyskać więcej informacji na temat skalowania w języku Python i Node.js, zobacz Azure Functions Przewodnik dla deweloperów w języku Python — skalowanie i współbieżność oraz Azure Functions Node.js Przewodnik dla deweloperów — skalowanie i współbieżność.For more information on scaling in Python and Node.js, see Azure Functions Python developer guide - Scaling and concurrency and Azure Functions Node.js developer guide - Scaling and concurrency.

Model rozliczaniaBilling model

Rozliczenia dla różnych planów są szczegółowo opisane na stronie cennika Azure Functions.Billing for the different plans is described in detail on the Azure Functions pricing page. Użycie jest agregowane na poziomie aplikacji funkcji i zlicza tylko czas wykonywania kodu funkcji.Usage is aggregated at the function app level and counts only the time that function code is executed. Następujące jednostki dotyczą rozliczeń:The following are units for billing:

  • Użycie zasobów w gigabajtach sekund (GB-s).Resource consumption in gigabyte-seconds (GB-s). Obliczany jako kombinacja rozmiaru pamięci i czasu wykonywania dla wszystkich funkcji w aplikacji funkcji.Computed as a combination of memory size and execution time for all functions within a function app.
  • Wykonania.Executions. Zliczane za każdym razem, gdy funkcja jest wykonywana w odpowiedzi na wyzwalacz zdarzenia.Counted each time a function is executed in response to an event trigger.

Przydatne zapytania i informacje dotyczące sposobu zrozumienia rachunku zużycia można znaleźć na stronie często zadawanych pytań dotyczących rozliczeń.Useful queries and information on how to understand your consumption bill can be found on the billing FAQ.

Porównanie planów hostinguHosting plans comparison

W poniższej tabeli porównawczej przedstawiono wszystkie ważne aspekty pomocne w decyzji dotyczącej wyboru planu hostingu aplikacji Azure Functions:The following comparison table shows all important aspects to help the decision of Azure Functions App hosting plan choice:

Podsumowanie planuPlan summary

Plan ZużycieConsumption plan Skaluj automatycznie i płacisz tylko za zasoby obliczeniowe, gdy funkcje są uruchomione.Scale automatically and only pay for compute resources when your functions are running. W planie zużycia wystąpienia hosta funkcji są dynamicznie dodawane i usuwane na podstawie liczby zdarzeń przychodzących.On the Consumption plan, instances of the Functions host are dynamically added and removed based on the number of incoming events.
✔ Domyślnego planu hostingu.✔ Default hosting plan.
✔ Płacisz tylko wtedy, gdy funkcje są uruchomione.✔ Pay only when your functions are running.
Automatyczne skalowanie ✔, nawet w okresach dużego obciążenia.✔ scale-out automatically, even during periods of high load.
Plan PremiumPremium plan Podczas automatycznego skalowania na podstawie popytu należy używać wstępnie rozgrzanych procesów roboczych do uruchamiania aplikacji bez opóźnień, uruchamiać się na bardziej wydajnych wystąpieniach i łączyć się z sieci wirtualnych.While automatically scaling based on demand, use pre-warmed workers to run applications with no delay after being idle, run on more powerful instances, and connect to VNETs. Oprócz wszystkich funkcji planu App Service należy wziąć pod uwagę plan Azure Functions Premium w następujących sytuacjach:Consider the Azure Functions Premium plan in the following situations, in addition to all features of the App Service plan:
✔ Aplikacje funkcji działają ciągle lub niemal ciągle.✔ Your function apps run continuously, or nearly continuously.
✔ Masz dużą liczbę niewielkich wykonań i masz rozliczenie o dużym obciążeniu, ale niski GB drugiego rachunku w planie zużycia.✔ You have a high number of small executions and have a high execution bill but low GB second bill in the Consumption plan.
✔ Potrzebujesz więcej opcji procesora lub pamięci niż to, co jest dostępne w ramach planu zużycia.✔ You need more CPU or memory options than what is provided by the Consumption plan.
✔ Kod musi być uruchomiony dłużej niż maksymalny dozwolony czas wykonywania w planie zużycia.✔ Your code needs to run longer than the maximum execution time allowed on the Consumption plan.
✔ Wymagane są funkcje, które są dostępne tylko w planie Premium, takie jak łączność z siecią wirtualną.✔ You require features that are only available on a Premium plan, such as virtual network connectivity.
Dedykowany plan1Dedicated plan1 Uruchamiaj swoje funkcje w ramach planu App Service według regularnych App Service stawek planu.Run your functions within an App Service plan at regular App Service plan rates. Dobrze pasuje do długotrwałych operacji, a także wtedy, gdy są wymagane bardziej przewidywalne skalowanie i koszty.Good fit for long running operations, as well as when more predictive scaling and costs are required. Należy wziąć pod uwagę plan App Service w następujących sytuacjach:Consider an App Service plan in the following situations:
✔ Masz istniejące, nieużywane maszyny wirtualne, na których działają już inne wystąpienia App Service.✔ You have existing, underutilized VMs that are already running other App Service instances.
✔ Chcesz udostępnić niestandardowy obraz, na którym będą uruchamiane funkcje.✔ You want to provide a custom image on which to run your functions.
ASE1ASE1 App Service Environment (ASE) to funkcja App Service, która zapewnia w pełni izolowane i dedykowane środowisko do bezpiecznego uruchamiania aplikacji App Service na dużą skalę.App Service Environment (ASE) is an App Service feature that provides a fully isolated and dedicated environment for securely running App Service apps at high scale. Środowisk ASE są odpowiednie dla obciążeń aplikacji, które wymagają:ASEs are appropriate for application workloads that require:
✔ Bardzo wysoka Skala.✔ Very high scale.
✔ Pełna izolacja obliczeniowa i bezpieczny dostęp do sieci.✔ Full compute isolation and secure network access.
✔ Wysokie wykorzystanie pamięci.✔ High memory utilization.
KubernetesKubernetes Kubernetes zapewnia w pełni izolowane i dedykowane środowisko działające w oparciu o platformę Kubernetes.Kubernetes provides a fully isolated and dedicated environment running on top of the Kubernetes platform. Kubernetes jest odpowiednie dla obciążeń aplikacji, które wymagają:Kubernetes is appropriate for application workloads that require:
✔ Niestandardowe wymagania sprzętowe.✔ Custom hardware requirements.
✔ Izolacja i bezpieczny dostęp do sieci.✔ Isolation and secure network access.
✔ Możliwość uruchamiania w środowisku hybrydowym lub w chmurze.✔ Ability to run in hybrid or multi-cloud environment.
✔ Uruchamiane razem z istniejącymi aplikacjami i usługami Kubernetes.✔ Run alongside existing Kubernetes applications and services.

1 Aby uzyskać określone limity dla różnych opcji planu App Service, zobacz limity App Service planu.1 For specific limits for the various App Service plan options, see the App Service plan limits.

System operacyjny/środowisko uruchomienioweOperating system/runtime

System Linux1Linux1
Tylko kodCode-only
System Windows2Windows2
Tylko kodCode-only
Linux, 1, 3Linux1,3
Kontener platformy DockerDocker container
Plan ZużycieConsumption plan .NET Core.NET Core
Node.jsNode.js
JavaJava
PythonPython
.NET Core.NET Core
Node.jsNode.js
JavaJava
Program PowerShell CorePowerShell Core
Brak pomocy technicznejNo support
Plan PremiumPremium plan .NET Core.NET Core
Node.jsNode.js
JavaJava
PythonPython
.NET Core.NET Core
Node.jsNode.js
JavaJava
Program PowerShell CorePowerShell Core
.NET Core.NET Core
Node.jsNode.js
JavaJava
Program PowerShell CorePowerShell Core
PythonPython
Dedykowany plan4Dedicated plan4 .NET Core.NET Core
Node.jsNode.js
JavaJava
PythonPython
.NET Core.NET Core
Node.jsNode.js
JavaJava
Program PowerShell CorePowerShell Core
.NET Core.NET Core
Node.jsNode.js
JavaJava
Program PowerShell CorePowerShell Core
PythonPython
ASE4ASE4 .NET Core.NET Core
Node.jsNode.js
JavaJava
PythonPython
.NET Core.NET Core
Node.jsNode.js
JavaJava
Program PowerShell CorePowerShell Core
.NET Core.NET Core
Node.jsNode.js
JavaJava
Program PowerShell CorePowerShell Core
PythonPython
KubernetesKubernetes n/dn/a n/dn/a .NET Core.NET Core
Node.jsNode.js
JavaJava
Program PowerShell CorePowerShell Core
PythonPython

1 System Linux jest jedynym obsługiwanym systemem operacyjnym dla stosu środowiska uruchomieniowego języka Python.1Linux is the only supported operating system for the Python runtime stack.
2 System Windows to jedyny obsługiwany system operacyjny dla stosu środowiska uruchomieniowego programu PowerShell.2Windows is the only supported operating system for the PowerShell runtime stack.
3 System Linux jest jedynym obsługiwanym systemem operacyjnym dla kontenerów platformy Docker.3Linux is the only supported operating system for Docker containers. 4 Aby uzyskać określone limity dla różnych opcji planu App Service, zobacz limity App Service planu.4 For specific limits for the various App Service plan options, see the App Service plan limits.

SkalowanieScale

Skalowanie w poziomieScale out Maksymalna liczba wystąpieńMax # instances
Plan ZużycieConsumption plan Oparte na zdarzeniach.Event driven. Automatyczne skalowanie w poziomie, nawet w okresach dużego obciążenia.Scale out automatically, even during periods of high load. Azure Functions infrastruktury skaluje zasoby procesora i pamięci, dodając kolejne wystąpienia hosta funkcji na podstawie liczby zdarzeń wyzwalanych przez jej funkcje.Azure Functions infrastructure scales CPU and memory resources by adding additional instances of the Functions host, based on the number of events that its functions are triggered on. 200200
Plan PremiumPremium plan Oparte na zdarzeniach.Event driven. Automatyczne skalowanie w poziomie, nawet w okresach dużego obciążenia.Scale out automatically, even during periods of high load. Azure Functions infrastruktury skaluje zasoby procesora i pamięci, dodając kolejne wystąpienia hosta funkcji na podstawie liczby zdarzeń wyzwalanych przez jej funkcje.Azure Functions infrastructure scales CPU and memory resources by adding additional instances of the Functions host, based on the number of events that its functions are triggered on. 100100
Dedykowany plan1Dedicated plan1 Ręczne/automatyczne skalowanieManual/autoscale 10-2010-20
ASE1ASE1 Ręczne/automatyczne skalowanieManual/autoscale 100100
KubernetesKubernetes Skalowanie automatyczne sterowane zdarzeniami dla klastrów Kubernetes przy użyciu KEDA.Event-driven autoscale for Kubernetes clusters using KEDA. Różni się   w zależności od   klastra.  Varies by cluster.  

1 Aby uzyskać określone limity dla różnych opcji planu App Service, zobacz limity App Service planu.1 For specific limits for the various App Service plan options, see the App Service plan limits.

Zachowanie zimnego uruchamianiaCold start behavior

 Plan zużyciaConsumption plan Aplikacje mogą skalować do zera w razie bezczynności przez pewien czas, co oznacza, że niektóre żądania mogą mieć dodatkowe opóźnienia podczas uruchamiania.Apps may scale to zero if idle for a period of time, meaning some requests may have additional latency at startup. Plan zużycia ma pewne optymalizacje, aby ułatwić skrócenie czasu uruchamiania, w tym ściąganie z wbudowanych funkcji symboli zastępczych, które mają już uruchomiony host funkcji i procesy językowe.The consumption plan does have some optimizations to help decrease cold start time, including pulling from pre-warmed placeholder functions that already have the function host and language processes running.
Plan PremiumPremium plan Bezterminowo podgrzewane wystąpienia, aby uniknąć dowolnego zimnego startu.Perpetually warm instances to avoid any cold start.
Dedykowany plan1Dedicated plan1 W przypadku uruchamiania w ramach dedykowanego planu hosty funkcji mogą działać w sposób ciągły, co oznacza, że zimne uruchomienie nie jest naprawdę problemem.When running in a Dedicated plan, the Functions host can run continuously, which means that cold start isn’t really an issue.
ASE1ASE1 W przypadku uruchamiania w ramach dedykowanego planu hosty funkcji mogą działać w sposób ciągły, co oznacza, że zimne uruchomienie nie jest naprawdę problemem.When running in a Dedicated plan, the Functions host can run continuously, which means that cold start isn’t really an issue.
KubernetesKubernetes Zależy od konfiguracji KEDA.Depends on KEDA configuration. Aplikacje można skonfigurować tak, aby zawsze były uruchamiane, a nigdy nie miały zimnego startu lub skonfigurowane do skalowania do zera, co spowoduje zimne rozpoczęcie od nowych zdarzeń.Apps can be configured to always run and never have cold start, or configured to scale to zero, which results in cold start on new events.

1 Aby uzyskać określone limity dla różnych opcji planu App Service, zobacz limity App Service planu.1 For specific limits for the various App Service plan options, see the App Service plan limits.

Limity usługiService limits

ZasóbResource Plan ZużycieConsumption plan Plan PremiumPremium plan Plan dedykowanyDedicated plan ASEASE KubernetesKubernetes
Domyślny limit czasu (w min)Default timeout duration (min) 55 3030 301301 3030 3030
Maksymalny czas trwania (w min)Max timeout duration (min) 1010 niepowiązane7unbounded7 niepowiązane2unbounded2 Unboundedunbounded Unboundedunbounded
Maksymalna liczba połączeń wychodzących (na wystąpienie)Max outbound connections (per instance) 600 aktywne (łącznie 1200)600 active (1200 total) Unboundedunbounded Unboundedunbounded Unboundedunbounded Unboundedunbounded
Maksymalny rozmiar żądania (MB)3Max request size (MB)3 100100 100100 100100 100100 Zależy od klastraDepends on cluster
Maksymalna długość ciągu zapytania3Max query string length3 40964096 40964096 40964096 40964096 Zależy od klastraDepends on cluster
Maksymalna długość adresu URL żądania3Max request URL length3 81928192 81928192 81928192 81928192 Zależy od klastraDepends on cluster
ACU na wystąpienieACU per instance 100100 210-840210-840 100-840100-840 210-2508210-2508 Cennik AKSAKS pricing
Maksymalna ilość pamięci (GB na wystąpienie)Max memory (GB per instance) 1.51.5 3,5-143.5-14 1,75-141.75-14 3,5 – 143.5 - 14 Obsługiwany jest dowolny węzełAny node is supported
Aplikacje funkcji na planFunction apps per plan 100100 100100 niepowiązane4unbounded4 Unboundedunbounded Unboundedunbounded
Plany usługi App ServiceApp Service plans 100 na region100 per region 100 na grupę zasobów100 per resource group 100 na grupę zasobów100 per resource group - -
Magazyn5Storage5 5 TB5 TB 250 GB250 GB 50-1000 GB50-1000 GB 1 TB1 TB n/dn/a
Domeny niestandardowe na aplikacjęCustom domains per app 50065006 500500 500500 500500 n/dn/a
Obsługa protokołu SSL domeny niestandardowejCustom domain SSL support uwzględniono niepowiązane połączenie SNI SSLunbounded SNI SSL connection included uwzględniono niepowiązane SNI SSL i 1 Połączenie SSL z adresu IP połączeńunbounded SNI SSL and 1 IP SSL connections included uwzględniono niepowiązane SNI SSL i 1 Połączenie SSL z adresu IP połączeńunbounded SNI SSL and 1 IP SSL connections included uwzględniono niepowiązane SNI SSL i 1 Połączenie SSL z adresu IP połączeńunbounded SNI SSL and 1 IP SSL connections included n/dn/a

1 domyślnie przekroczenie limitu czasu dla funkcji 1. x środowiska uruchomieniowego w planie App Service jest niepowiązane.1 By default, the timeout for the Functions 1.x runtime in an App Service plan is unbounded.
2 wymaga, aby plan App Service był ustawiony na wartość zawsze włączone.2 Requires the App Service plan be set to Always On. Płatność według stawekstandardowych.Pay at standard rates.
3 te limity są ustawiane na hoście.3 These limits are set in the host.
4 rzeczywista liczba aplikacji funkcji, które można hostować, zależy od aktywności aplikacji, rozmiaru wystąpień maszyn i odpowiedniego wykorzystania zasobów.4 The actual number of function apps that you can host depends on the activity of the apps, the size of the machine instances, and the corresponding resource utilization.
5 limit magazynowania to całkowity rozmiar zawartości w magazynie tymczasowym dla wszystkich aplikacji w ramach tego samego planu App Service.5 The storage limit is the total content size in temporary storage across all apps in the same App Service plan. W planie użycia Azure Files tymczasowego magazynu.Consumption plan uses Azure Files for temporary storage.
6 gdy aplikacja funkcji jest hostowana w planie zużycia, obsługiwana jest tylko opcja CNAME.6 When your function app is hosted in a Consumption plan, only the CNAME option is supported. W przypadku aplikacji funkcji w planie Premium lub w planie App Servicemożna zmapować domenę niestandardową przy użyciu rekordu CNAME lub a.For function apps in a Premium plan or an App Service plan, you can map a custom domain using either a CNAME or an A record.
7 gwarantujemy do 60 minut.7 Guaranteed for up to 60 minutes.
8 procesów roboczych to role obsługujące aplikacje klienta.8 Workers are roles that host customer apps. Procesy robocze są dostępne w trzech stałych rozmiarach: jeden vCPU/3,5 GB pamięci RAM; Dwa vCPU/7 GB pamięci RAM; Cztery vCPU/14 GB pamięci RAM.Workers are available in three fixed sizes: One vCPU/3.5 GB RAM; Two vCPU/7 GB RAM; Four vCPU/14 GB RAM.

Funkcje sieciNetworking features

CechyFeature Plan ZużycieConsumption plan Plan PremiumPremium plan Plan dedykowanyDedicated plan ASEASE KubernetesKubernetes
Ograniczenia przychodzącego adresu IP i dostępu do lokacji prywatnejInbound IP restrictions and private site access ✅Tak✅Yes ✅Tak✅Yes ✅Tak✅Yes ✅Tak✅Yes ✅Tak✅Yes
Integracja z siecią wirtualnąVirtual network integration ❌Nie❌No ✅Tak (regionalne)✅Yes (Regional) ✅Tak (regionalne i brama)✅Yes (Regional and Gateway) ✅Tak✅Yes ✅Tak✅Yes
Wyzwalacze sieci wirtualnej (bez protokołu HTTP)Virtual network triggers (non-HTTP) ❌Nie❌No ✅Tak✅Yes ✅Tak✅Yes ✅Tak✅Yes ✅Tak✅Yes
Połączenia hybrydowe (tylko system Windows)Hybrid connections (Windows only) ❌Nie❌No ✅Tak✅Yes ✅Tak✅Yes ✅Tak✅Yes ✅Tak✅Yes
Ograniczenia wychodzącego adresu IPOutbound IP restrictions ❌Nie❌No ✅Tak✅Yes ✅Tak✅Yes ✅Tak✅Yes ✅Opcję✅Yes

RozliczeniaBilling

Plan ZużycieConsumption plan Płacisz tylko za czas działania funkcji.Pay only for the time your functions run. Rozliczenia zależą od liczby wykonań, czasu wykonania oraz użytej pamięci.Billing is based on number of executions, execution time, and memory used.
Plan PremiumPremium plan Plan Premium jest oparty na liczbie podstawowych sekund i ilości pamięci używanej w ramach wymaganych i wstępnie rozgrzanych wystąpień.Premium plan is based on the number of core seconds and memory used across needed and pre-warmed instances. Co najmniej jedno wystąpienie na plan musi być utrzymywane w całej porze.At least one instance per plan must be kept warm at all times. Ten plan zapewnia bardziej przewidywalne ceny.This plan provides more predictable pricing.
Dedykowany plan1Dedicated plan1 Płacisz za aplikacje funkcji w planie App Service, tak jak w przypadku innych zasobów App Service, takich jak aplikacje sieci Web.You pay the same for function apps in an App Service Plan as you would for other App Service resources, like web apps.
ASE1ASE1 Istnieje stała miesięczna stawka za środowisko ASE, która pokrywa się z infrastrukturą i nie zmienia rozmiaru środowiska ASE.there's a flat monthly rate for an ASE that pays for the infrastructure and doesn't change with the size of the ASE. Ponadto jest kosztem App Service planu vCPU.In addition, there's a cost per App Service plan vCPU. Wszystkie aplikacje hostowane w środowisku ASE znajdują się w jednostce SKU wyceny „izolowanej” (Isolated).All apps hosted in an ASE are in the Isolated pricing SKU.
KubernetesKubernetes Płacisz tylko za koszty klastra Kubernetes; Brak dodatkowych rozliczeń dla funkcji.You pay only the costs of your Kubernetes cluster; no additional billing for Functions. Aplikacja funkcji działa jako obciążenie aplikacji na klastrze, podobnie jak zwykła aplikacja.Your function app runs as an application workload on top of your cluster, just like a regular app.

1 Aby uzyskać określone limity dla różnych opcji planu App Service, zobacz limity App Service planu.1 For specific limits for the various App Service plan options, see the App Service plan limits.

Następne krokiNext steps