Event-based scaling in Azure Functions (2023)

  • Article
  • 7 minutes to read

On the Consumption and Premium plans, Azure Functions scales CPU and memory resources by adding additional instances of the Functions host. The number of instances is determined by the number of events that trigger a function.

Each function host instance on the Consumption plan is limited to 1.5 GB of memory and one CPU. A host instance is the entire function app, that is, H. All the functions in a function app share resources in one instance and scale at the same time. Feature apps that scale independently on the same consumption plan. On the Premium plan, the plan size determines the memory and CPU available to all apps on that plan on that instance.

Function code files are stored in Azure Files shares in the function's primary storage account. If you delete the function app's main storage account, the function code files are deleted and cannot be restored.

execution time scale

Azure Functions uses a component called "scale controllerto monitor the rate of events and determine whether to scale out or scale out. The scale controller uses heuristics for each type of trigger. For example, if you use an Azure Queue Storage trigger, it will scale based on the length of the queue and the age of the oldest queue message.

The Azure Functions unit of scale is the function app. When the function app is expanded, additional resources are allocated to run multiple instances of the Azure Functions host. On the other hand, the scale controller removes role host instances when computational demands decrease. The instance count will eventually "decrement" to zero when no function is running in a function app.

Event-based scaling in Azure Functions (1)

fresh start

After your function app has been idle for a few minutes, the platform can reduce the number of instances running your app to zero. The next request has the additional latency of scaling from zero to one. This latency is denoted asfresh start. The number of dependencies required by your function app can affect its cold start time. Cold start is more of a problem for synchronous operations like B. HTTP triggers that need to return a response. If cold starts are taking a toll on your resources, consider running a premium plan or a dedicated planAll timesetting enabled.

Understand escalation behavior

The scale can depend on many factors and can scale differently depending on the trigger and language selected. There are some subtleties of scaling behavior that you should be aware of:

  • Maximum instances:A single role app can only scale up to a maximum of 200 instances. However, a single instance can process more than one message or request at a time, so there is no set limit on the number of concurrent executions. CanSpecify a lower maximumThrottle scale as needed.
  • New instance fee:For HTTP triggers, new instances are allocated at most once per second. For non-HTTP triggers, new instances are allocated at most once every 30 seconds. Scaling is faster when running on aPlano Premium.
  • Scale Efficiency:Usage for Service Bus triggersAdministratorResource rights for the most efficient scaling. withI'm listeningCorrect scaling is not as accurate because tail length cannot be used to inform size decisions. For more information on defining rights in Service Bus access policies, seeShared Access Authorization Policy. For information about event hub triggers, seethis size guide.

limited climbing

You might want to limit the maximum number of instances an application uses to scale out. This is most common in cases where a downstream component, such as a database, has limited performance. By default, Consumption plan features scale up to 200 instances and Premium plan features scale up to 100 instances. You can set a lower maximum for a specific application by changing thefunctionAppScaleLimitValor. afunctionAppScaleLimitcan be adjusted0oNullno restrictions or a valid value between1and the maximum application.

az resource update --resource-type Microsoft.Web/sites -g <RESOURCE_GROUP> -n <FUNCTION_APPLICATION_NAME>/config/web --set properties.functionAppScaleLimit=<SCALE_LIMIT>
$resource = Get-AzResource -ResourceType Microsoft.Web/sites -ResourceGroupName <RESOURCE_GROUP> -Name <FUNCTION_APP_NAME>/config/web$resource.Properties.functionAppScaleLimit = <SCALE_LIMIT>$resource | Set-AzResource-Force

scale behavior

Event-based scaling automatically reduces capacity when demand for its features decreases. To do this, the worker instances of your function app are terminated. Before an instance is terminated, no new events are sent to the instance anymore. Also, functions that are currently running have time to complete execution. This behavior is logged as drain mode. This shutdown period can be up to 10 minutes for Consumption plan apps and up to 60 minutes for Premium plan apps. Event-based scaling and this behavior do not apply to apps on dedicated plans.

The following considerations apply to shrink behavior:

  • For consumption plan resource apps running on Windows, only apps created after May 2021 have drain mode enabled by default.
  • To enable graceful shutdown of functions that use the Service Bus trigger, use version 4.2.0 or later ofService bus extension.

Event center trigger

This section describes how scaling behaves when your function uses aEvent center triggerof unoIoT Hub Trigger. In such cases, each instance of an event-triggered function is backed by a singleEventProcessorHostExample. The trigger (powered by Event Hubs) ensures that only oneEventProcessorHostThe instance can get a lease on a specific partition.

For example, consider an event hub like this:

  • 10 partitions
  • 1000 events evenly distributed across all partitions, with 100 messages in each partition

When your function is first activated, there is only one instance of the function. Let's call the first instance of the functionfunction_0. Diefunction_0The function has a single instance ofEventProcessorHostconcluding a lease in the ten partitions. This instance reads events from partitions 0-9. From this moment, one of the following situations occurs:

  • No new role instances are required:function_0it can handle all 1000 events before the feature sizing logic takes effect. In this case, every 1,000 messages are processed byfunction_0.

  • An additional role instance is added: When the scaling logic of the functions dictatesfunction_0has more messages than can be processed, a new instance of the function app (function_1) created. This new role also has an instance associated with it.EventProcessorHost. When the underlying Event Hubs detects that a new host instance is trying to read messages, the partitions are distributed across the host instances. For example, partitions 0-4 can be assignedfunction_0and partitions 5-9 up tofunction_1.

  • N more role instances are added: When the scaling logic of the functions determines that both are the casefunction_0mifunction_1have more messages than they can handle, newFunctions_NThe function app instances are created. Applications are built to the point wherenorteis greater than the number of partitions in the event hub. In our example, Event Hubs rebalances the partitions, in this case across instances.function_0...Functions_9.

When escalation occursnorteInstances is a number greater than the number of partitions in the event hub. This standard is used to ensureEventProcessorHostInstances are available to acquire locks on partitions as they become available from other instances. You are only charged for the resources used in running the role instance. In other words, you will not be charged for this overbid.

When all functions complete execution (with or without errors), checkpoints are added to the associated storage account. If the checkpoint is successful, the 1000 messages are never retrieved again.

Best practices and patterns for scalable applications

There are many aspects of a function app that affect its scaling, including host configuration, runtime requirements, and resource efficiency. For more information, seeScalability section of the Performance Considerations article. You should also consider how connections behave when your function app scales. For more information, seeHow to manage connections in Azure Functions.

For more information on scaling in Python and Node.js, seePython Developer Guide for Azure Functions: Scalability and ConcurrencymiNode.js Developer Guide for Azure Functions: Scalability and Concurrency.

billing model

The billing of the different plans is described in detailAzure Functions pricing page. Usage is aggregated at the function app level and only counts the time that the function code executes. The following units are used for billing:

  • Resource consumption in gigabyte-seconds (GB-s). Calculated as a combination of memory size and execution time for all functions in a function app.
  • executions. Counted each time a function is executed in response to an event trigger.

Here you will find queries and useful information to help you understand the billing of your consumptionin the billing FAQ.

Next steps

  • Azure Functions hosting options

FAQs

How do I improve the performance of my Azure function app? ›

The following are best practices in how you build and architect your serverless solutions using Azure Functions.
  1. Avoid long running functions. ...
  2. Make sure background tasks complete. ...
  3. Cross function communication. ...
  4. Write functions to be stateless. ...
  5. Write defensive functions. ...
  6. Function organization best practices.
Oct 4, 2022

How scalable is Azure functions? ›

Scale out automatically, even during periods of high load. Azure Functions infrastructure scales CPU and memory resources by adding additional instances of the Functions host, based on the number of incoming trigger events. Event driven. Scale out automatically, even during periods of high load.

Which of the following Azure functions hosting plans is best when predictive scaling and costs are required? ›

3. App Service Plan: With this plan, virtual machines are always running, so you never have to worry about cold starts. This is ideal for long-running operations, or when more predictive scaling and costs are required.

How many requests can Azure function handle? ›

Maximum instances: A single function app only scales out to a maximum of 200 instances. 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. You can specify a lower maximum to throttle scale as required.

In which situation Azure function app is best solution? ›

Azure Functions are best suited for smaller apps have events that can work independently of other websites. Some of the common azure functions are sending emails, starting backup, order processing, task scheduling such as database cleanup, sending notifications, messages, and IoT data processing.

How do you achieve scalability in Azure? ›

  1. Step 1 − Go to your web app in the management portal and select 'scale' from the top menu. ...
  2. Step 2 − Under shared plan, you can create 1 instance but you don't have the option of auto scaling.
  3. Step 3 − Under basic service plan, you can create up to 3 instances but do have option to auto scale.

What are the disadvantages of Azure functions? ›

Vendor-lock is the biggest drawback of this function. It is very difficult to run code deployed in Azure function outside the azure environment. The language used in function app such as java, NodeJS, etc are not specialized but the code to establish a connection between resources is specific to azure.

What are the two types of scaling on Azure? ›

Two main ways an application can scale include vertical scaling and horizontal scaling. Vertical scaling (scaling up) increases the capacity of a resource, for example, by using a larger virtual machine (VM) size. Horizontal scaling (scaling out) adds new instances of a resource, such as VMs or database replicas.

What is the difference between scale up and scale out in Azure functions? ›

You scale up by changing the pricing tier of the App Service plan that your app belongs to. Scale out: Increase the number of VM instances that run your app. You can scale out to as many as 30 instances, depending on your pricing tier.

What is the difference between premium and consumption in Azure Functions? ›

Billing for the Premium plan is based on the number of core seconds and memory allocated across instances. This billing differs from the Consumption plan, which is billed based on per-second resource consumption and executions. There's no execution charge with the Premium plan.

What is the difference between horizontal and vertical scaling in Azure? ›

Horizontal vs vertical scaling

Horizontal scaling is flexible in a cloud situation as it allows you to run a large number of VMs to handle load. In contrast, vertical scaling, keeps the same number of resources constant, but gives them more capacity in terms of memory, CPU speed, disk space and network.

Can Azure Functions run in parallel? ›

Parallel execution

Each instance of the function app, whether the app runs on the Consumption hosting plan or a regular App Service hosting plan, might process concurrent function invocations in parallel using multiple threads.

How to handle 10,000 requests per second? ›

In that case, there is no need to looking for a problem in the application itself. Let's start with simple steps.
...
Simple Backend optimizations
  1. Make sure you are using database connection pooling.
  2. Inspect your SQL queries and add caching for them.
  3. Add caching for whole responses.
May 15, 2020

What is 429 too many requests in Azure function? ›

If your logic app workflow experiences throttling, which happens when the number of requests exceed the rate at which the destination can handle over a specific amount of time, you get the "HTTP 429 Too many requests" error.

What is 429 too many requests in Azure function app? ›

The HTTP 429 status code indicates that the user has sent too many requests in a given amount of time (“rate limiting”). So, for HttpTrigger based function, the host. json will look like this. 230 seconds is the maximum amount of time that an HTTP triggered function can take to respond to a request.

What is the best language for Azure functions? ›

For most . NET developers, C# is the go-to language to solve all. And in most cases, that reflex is probably right. If you're already running C#-based applications on Azure, be it in Service Fabric, containers, or anything else, it's only logical to use the same language for your functions.

Can the same Azure function handle multiple HTTP methods? ›

Function doesn't limit you and you dont have to allow only one method per function. It is completely feasible to process the different request in the code after entering function.

What is a major difference between Azure function and logic apps? ›

Azure Functions is a serverless compute service, whereas Azure Logic Apps is a serverless workflow integration platform. Both can create complex orchestrations. An orchestration is a collection of functions, or actions in Azure Logic Apps, that you can run to complete a complex task.

What are the two 2 ways to achieve scalability? ›

We have two basic ways to achieve scalability, namely increasing system capacity, typically through replication, and performance optimization of system components.

How do you solve scalability problems? ›

The best solution to most database scalability issues is optimizing SQL queries and implementing indexing strategies. By building articles and authors into a single query, you can dramatically reduce the volume of queries you're running.

Does improving scalability improve performance? ›

Scalability is the ability to handle larger amounts of work when the system is under heavy load by throwing more resources at the problem. This generally means improving performance by buying faster servers or adding more servers.

Can Azure functions be long running? ›

With Durable Functions you can easily support long-running processes, applying the Async HTTP APIs or Monitoring Patterns. In case you are dealing with functions that require some time to process the payload or request consider running under an App Service Plan, WebJob, or Durable Functions.

What are the cons of using functions? ›

Five Drawbacks/Downsides of Functional Programming
  • Input/output (IO) IO relies on side effects, so it's inherently non-functional. ...
  • Recursion. ...
  • Terminology problems. ...
  • The non-functionality of computers. ...
  • The difficulty of stateful programming. ...
  • Abstraction is powerful. ...
  • It's inherently parallel. ...
  • It's easily testable/debuggable.
Aug 29, 2019

Why Azure functions are serverless? ›

Azure Functions is a serverless solution that allows you to write less code, maintain less infrastructure, and save on costs. Instead of worrying about deploying and maintaining servers, the cloud infrastructure provides all the up-to-date resources needed to keep your applications running.

What are the two most common methods of feature scaling? ›

The most common techniques of feature scaling are Normalization and Standardization. Normalization is used when we want to bound our values between two numbers, typically, between [0,1] or [-1,1]. While Standardization transforms the data to have zero mean and a variance of 1, they make our data unitless.

How many types of scaling techniques are there? ›

As mentioned, there are two main types of scaling namely; Rating Scales and Attitude Scales. Researcher need to select one scaling method before development of the survey/ questionnaire.

What are the two main types of scaling in cloud computing? ›

There are two basic types of scalability in cloud computing: vertical and horizontal scaling. With vertical scaling, also known as “scaling up” or “scaling down,” you add or subtract power to an existing cloud server upgrading memory (RAM), storage or processing power (CPU).

Is it better to scale up or out? ›

To decide between scale-up vs. scale-out for storage, consider factors such as data growth expectations, budget, criticality of systems and existing hardware. Generally, organizations will scale up when they face performance issues and need a short-term fix; they will scale out when flexibility is important.

Is it better to scale up or scale out? ›

You have options when you need to scale your applications, but each comes with benefits and drawbacks. Scaling up vertically means adding more compute resources—such as CPU, memory, and disk capacity—to an application pod. On the other hand, applications can scale out horizontally by adding more replica pods.

What are the advantages of scaling in Azure? ›

Microsoft Azure auto-scaling has some definite benefits -

Azure auto-scaling feature scales out the instances impeccably whenever demand increases. You can save money by flaking unnecessary instances automatically. Auto-scaling feature allows you to set alerts and notifications based upon your scaling criteria.

What are the 3 pricing models of Azure? ›

Azure Pricing Models

Microsoft offers three main ways to pay for Azure VMs and other cloud resources: pay as you go, reserved instances, and spot instances.

How can I reduce my Azure Consumption? ›

Buy an Azure savings plan to save money on a variety of compute services. Buy reserved virtual machine instances to save money over pay-as-you-go costs. Optimize virtual machine spend by resizing or shutting down underutilized instances. Use Standard Storage to store Managed Disks snapshots.

How do I increase timeout in Azure function? ›

json. In a recent update, the Azure Functions team at Microsoft has added a configuration option that enables an Azure Functions App to have the timeout increased. To implement this, the functionTimeout property within the host. json file for an Azure Function App can be set to a timespan duration of 10 minutes.

Why horizontal scaling is better than vertical? ›

With vertical scaling (“scaling up”), you're adding more compute power to your existing instances/nodes. In horizontal scaling (“scaling out”), you get the additional capacity in a system by adding more instances to your environment, sharing the processing and memory workload across multiple devices.

What are the cons of vertical scaling? ›

Disadvantages of Vertical Scaling:

The hardware costs more because of high-end servers. There is a limit to the amount you can upgrade. You are restricted to a single database vendor, and migration is challenging, or you may need to start over.

Which is more expensive horizontal or vertical scaling? ›

Vertical scaling will cost less when the servers are still small. As the servers grow bigger, vertical scaling costs will grow exponentially. At that point, horizontal scaling becomes a cheaper alternative.

Can you have multiple Azure Functions in one project? ›

As part of your solution, you likely develop and publish multiple functions. These functions are often combined into a single function app, but they can also run in separate function apps.

Can multiple Azure Functions use the same storage account? ›

It's possible for multiple function apps to share the same storage account without any issues. For example, in Visual Studio you can develop multiple apps using the Azure Storage Emulator. In this case, the emulator acts like a single storage account.

Can an Azure function have multiple bindings? ›

Bindings are optional and a function might have one or multiple input and/or output bindings. Triggers and bindings let you avoid hardcoding access to other services. Your function receives data (for example, the content of a queue message) in function parameters.

How many requests per second is good? ›

Average 200-300 connections per second.

How do you handle millions of API requests? ›

To handle 'millions of request' the system must be deployed on multiple web servers behind a load-balancer that would round robin between each. if the system is hitting a datastore, a second level cache(ehcache, memcache,etc.) should be used to reduce load on the datastore.

How do you overcome 429 too many requests? ›

The simplest way to fix an HTTP 429 error is to wait to send another request. Often, this status code is sent with a “Retry-after” header that specifies a period of time to wait before sending another request. It may specify only a few seconds or minutes.

How do I fix 429 too many requests? ›

Here is a recap of how to fix error 429 too many requests:
  1. Flush your browser cache.
  2. Monitor your hosting account's order usage.
  3. Temporarily disable WordPress plugins.
  4. Switch to a default WordPress theme.
  5. Restore a website backup.
  6. Change your default login URL.
Jan 5, 2023

How many get requests is too many? ›

You should strive to keep the number of HTTP requests under 50. If you can get requests below 25, you're doing amazing. By their nature, HTTP requests are not bad. Your site needs them to function and look good.

How do I increase my Azure quota limit? ›

Request a quota increase
  1. Sign in to the Azure portal.
  2. Enter "quotas" into the search box, and then select Quotas.
  3. On the Overview page, select a provider, such as Compute. ...
  4. On the My quotas page, under Quota name, select the quota you want to increase.
Jul 21, 2022

How many main request methods are there in Azure? ›

There are 4 basic methods, which are also referred to as CRUD operations: POST: Create a resource. GET: Read information from a resource.

Why is Azure app service so slow? ›

This problem is often caused by application level issues, such as: network requests taking a long time. application code or database queries being inefficient. application using high memory/CPU.

How do I monitor the performance of my Azure function? ›

Azure Functions can be monitored using Application Insights and Azure Monitor. Though Azure provides such monitoring solutions, users cannot monitor multiple entities with various metrics. Whereas, with Serverless360 monitoring, it is possible to monitor various entities based on metrics at the Application level.

How do I upgrade Azure function runtime? ›

Use the following procedure to view and update the runtime version currently used by a function app. In the Azure portal, browse to your function app. Under Settings, choose Configuration. In the Function runtime settings tab, locate the Runtime version.

How do I increase the timeout on my Azure function app? ›

In a recent update, the Azure Functions team at Microsoft has added a configuration option that enables an Azure Functions App to have the timeout increased. To implement this, the functionTimeout property within the host. json file for an Azure Function App can be set to a timespan duration of 10 minutes.

Is Azure going away? ›

We're retiring Azure VMs (classic) on September 1, 2023 - Azure Virtual Machines | Microsoft Learn. This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.

Is Azure slower than AWS? ›

Network latency: AWS wins again.

Its top-performing machine's 99th percentile network latency was 28% and 37% lower than Azure and GCP, respectively.

How do I autoscale Azure App Service? ›

Create your first autoscale setting
  1. Open the Autoscale pane in Azure Monitor and select a resource that you want to scale. The following steps use an App Service plan associated with a web app. ...
  2. The current instance count is 1. ...
  3. Provide a name for the scale setting. ...
  4. You've now created your first scale rule. ...
  5. Select Save.
Jan 25, 2023

Which Azure tool could be helpful in monitoring the Azure functions? ›

You can also monitor the function app itself by using Azure Monitor. To learn more, see Monitoring Azure Functions with Azure Monitor.

How do I monitor Azure event grid? ›

Sign in to Azure portal. In the search bar at the topic, type Event Grid Topics, and then select Event Grid Topics from the drop-down list. Select your custom topic from the list of topics. View the metrics for the custom event topic on the Event Grid Topic page.

What is function execution count? ›

Function execution count indicates the number of times your function app has executed. This value correlates to the number of times a function runs in your app. FunctionExecutionUnits. Function execution units are a combination of execution time and your memory usage.

What is the time limit for Azure functions? ›

Functions in a Consumption plan are limited to 10 minutes for a single execution. In the Premium plan, the run duration defaults to 30 minutes to prevent runaway executions. However, you can modify the host.

How do I upgrade Azure functions from v3 to v4? ›

NET Azure Functions.
  1. Prepare for migration. Before you upgrade your app to version 4. ...
  2. Run the pre-upgrade validator. ...
  3. Identify function apps to upgrade. ...
  4. Upgrade your local project. ...
  5. Upgrade your function app in Azure.
Jan 11, 2023

References

Top Articles
Latest Posts
Article information

Author: Carmelo Roob

Last Updated: 21/11/2023

Views: 5753

Rating: 4.4 / 5 (65 voted)

Reviews: 88% of readers found this page helpful

Author information

Name: Carmelo Roob

Birthday: 1995-01-09

Address: Apt. 915 481 Sipes Cliff, New Gonzalobury, CO 80176

Phone: +6773780339780

Job: Sales Executive

Hobby: Gaming, Jogging, Rugby, Video gaming, Handball, Ice skating, Web surfing

Introduction: My name is Carmelo Roob, I am a modern, handsome, delightful, comfortable, attractive, vast, good person who loves writing and wants to share my knowledge and understanding with you.