Skip to content

Commit b34fff4

Browse files
Merge pull request #293964 from ggailey777/fixup
[Functions] Fix up for Madhura's two PRs
2 parents 9891f01 + 9ce8a29 commit b34fff4

File tree

3 files changed

+28
-27
lines changed

3 files changed

+28
-27
lines changed

articles/azure-functions/functions-scale.md

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: Azure Functions scale and hosting
33
description: Compare the various options you need to consider when choosing a hosting plan in which to run your function app in Azure Functions.
44
ms.assetid: 5b63649c-ec7f-4564-b168-e0a74cb7e0f3
55
ms.topic: limits-and-quotas
6-
ms.date: 11/04/2024
6+
ms.date: 02/02/2025
77
ms.custom: H1Hack27Feb2017, devdivchpfy22, build-2023, build-2024, ignite-2024
88
---
99
# Azure Functions hosting options
@@ -35,7 +35,7 @@ The following is a summary of the benefits of the various options for Azure Func
3535

3636
| Option | Benefits |
3737
| --- | --- |
38-
|**[Flex Consumption plan]**| Get rapid horizontal scaling with compute choices, virtual networking, and pay-as-you-go billing.<br/><br/>On the Flex Consumption plan, instances of the Functions host are dynamically added and removed based on the configured per instance concurrency and the number of incoming events. <br/><br/> ✔ Reduce cold starts by specifying a number of pre-provisioned (always ready) instances.<br/> ✔ Supports virtual networking for added security.<br/>✔ Pay when your functions are running.<br/>✔ Scales automatically, even during periods of high load.|
38+
|**[Flex Consumption plan]**| Get rapid horizontal scaling with compute choices, virtual networking, and pay-as-you-go billing.<br/><br/>On the Flex Consumption plan, instances of the Functions host are dynamically added and removed based on the configured per instance concurrency and the number of incoming events. <br/><br/> ✔ Reduce cold starts by specifying one or more pre-provisioned (always ready) instances.<br/> ✔ Supports virtual networking for added security.<br/>✔ Pay when your functions are running.<br/>✔ Scales automatically, even during periods of high load.|
3939
|**[Premium plan]**|Automatically scales based on demand using prewarmed workers, which run applications with no delay after being idle, runs on more powerful instances, and connects to virtual networks. <br/><br/>Consider the Azure Functions Premium plan in the following situations: <br/><br/>✔ Your function apps run continuously, or nearly continuously.<br/>✔ You want more control of your instances and want to deploy multiple function apps on the same plan with event-driven scaling.<br/>✔ You have a high number of small executions and a high execution bill, but low GB seconds in the Consumption plan.<br/>✔ You need more CPU or memory options than are provided by consumption plans.<br/>✔ Your code needs to run longer than the maximum execution time allowed on the Consumption plan.<br/>✔ You require virtual network connectivity.<br/>✔ You want to provide a custom Linux image in which to run your functions. |
4040
|**[Dedicated plan]** |Run your functions within an App Service plan at regular [App Service plan rates](https://azure.microsoft.com/pricing/details/app-service/windows/).<br/><br/>Best for long-running scenarios where [Durable Functions](durable/durable-functions-overview.md) can't be used. Consider an App Service plan in the following situations:<br/><br/>✔ You have existing and underutilized virtual machines that are already running other App Service instances.<br/>✔ You must have fully predictable billing, or you need to manually scale instances.<br/>✔ You want to run multiple web apps and function apps on the same plan<br/>✔ You need access to larger compute size choices.<br/>✔ Full compute isolation and secure network access provided by an App Service Environment (ASE).<br/>✔ Very high memory usage and high scale (ASE).|
4141
| **[Container Apps]** | Create and deploy containerized function apps in a fully managed environment hosted by Azure Container Apps.<br/><br/>Use the Azure Functions programming model to build event-driven, serverless, cloud native function apps. Run your functions alongside other microservices, APIs, websites, and workflows as container-hosted programs. Consider hosting your functions on Container Apps in the following situations:<br/><br/>✔ You want to package custom libraries with your function code to support line-of-business apps.<br/>✔ You need to migrate code execution from on-premises or legacy apps to cloud native microservices running in containers.<br/>✔ When you want to avoid the overhead and complexity of managing Kubernetes clusters and dedicated compute.<br/>✔ Your functions need high-end processing power provided by dedicated GPU compute resources. |
@@ -71,7 +71,7 @@ Maximum instances are given on a per-function app (Consumption) or per-plan (Pre
7171

7272
| Plan | Scale out | Max # instances |
7373
| --- | --- | --- |
74-
| **[Flex Consumption plan]** | [Per-function scaling](./flex-consumption-plan.md#per-function-scaling). Event-driven scaling decisions are calculated on a per-function basis, which provides a more deterministic way of scaling the functions in your app. With the exception of HTTP, Blob storage (Event Grid), and Durable Functions, all other function trigger types in your app scale on independent instances. All HTTP triggers in your app scale together as a group on the same instances, as do all Blob storage (Event Grid) triggers. All Durable Functions triggers also share instances and scale together. | Limited only by total memory usage of all instances across a given region. For more information, see [Instance memory](flex-consumption-plan.md#instance-memory). |
74+
| **[Flex Consumption plan]** | [Per-function scaling](./flex-consumption-plan.md#per-function-scaling). Event-driven scaling decisions are calculated on a per-function basis, which provides a more deterministic way of scaling the functions in your app. With the exception of HTTP, Blob storage (Event Grid), and Durable Functions, all other function trigger types in your app scale on independent instances. All HTTP triggers in your app scale together as a group on the same instances, as do all Blob storage (Event Grid) triggers. All Durable Functions triggers also share instances and scale together. | 1000<sup>5</sup> |
7575
| **[Premium plan]** | [Event driven](event-driven-scaling.md). Scale out automatically, even during periods of high load. Azure Functions infrastructure scales CPU and memory resources by adding more instances of the Functions host, based on the number of events that its functions are triggered on. | **Windows:** 100<br/>**Linux:** 20-100<sup>2</sup>|
7676
| **[Dedicated plan]**<sup>3</sup> | Manual/autoscale |10-30<br/>100 (ASE)|
7777
| **[Container Apps]** | [Event driven](event-driven-scaling.md). Scale out automatically, even during periods of high load. Azure Functions infrastructure scales CPU and memory resources by adding more instances of the Functions host, based on the number of events that its functions are triggered on. | 300-1000<sup>4</sup> |
@@ -81,16 +81,17 @@ Maximum instances are given on a per-function app (Consumption) or per-plan (Pre
8181
2. In some regions, Linux apps on a Premium plan can scale to 100 instances. For more information, see the [Premium plan article](functions-premium-plan.md#region-max-scale-out). <br/>
8282
3. For specific limits for the various App Service plan options, see the [App Service plan limits](../azure-resource-manager/management/azure-subscription-service-limits.md#azure-app-service-limits).
8383
4. On Container Apps, the default is 10 instances, but you can set the [maximum number of replicas](../container-apps/scale-app.md#scale-definition), which has an overall maximum of 1000. This setting is honored as long as there's enough cores quota available. When you create your function app from the Azure portal you're limited to 300 instances.
84+
5. Total instances in a given region are effectively limited by [regional subscription memory quotas](./flex-consumption-plan.md#regional-subscription-memory-quotas).
8485

8586
## Cold start behavior
8687

8788
| Plan | Details |
88-
| -- | -- |
89+
| ---- | ---- |
8990
| **[Flex Consumption plan]** | Supports [always ready instances](./flex-consumption-plan.md#always-ready-instances) to reduce the delay when provisioning new instances. |
9091
| **[Premium plan]** | Supports [always ready instances](./functions-premium-plan.md#always-ready-instances) to avoid cold starts by letting you maintain one or more _perpetually warm_ instances. |
9192
| **[Dedicated plan]** | When running in a Dedicated plan, the Functions host can run continuously on a prescribed number of instances, which means that cold start isn't really an issue. |
92-
| **[Container Apps]** | Depends on the [minimum number of replicas](../container-apps/scale-app.md#scale-definition):<br/> • When set to zero: apps can scale to zero when idle and some requests might have more latency at startup.<br/>• When set to one or more: the host process runs continuously, which means that cold start isn't an issue. |
93-
| **[Consumption plan]** | Apps can scale to zero when idle, meaning some requests might have more latency at startup. The consumption plan does have some optimizations to help decrease cold start time, including pulling from prewarmed placeholder functions that already have the host and language processes running. |
93+
| **[Container Apps]** | Depends on the [minimum number of replicas](../container-apps/scale-app.md#scale-definition):<br/> • When set to zero: apps can scale to zero when idle and some requests might have more latencies at startup.<br/>• When set to one or more: the host process runs continuously, which means that cold start isn't an issue. |
94+
| **[Consumption plan]** | Apps can scale to zero when idle, meaning some requests might have more latencies at startup. The consumption plan does have some optimizations to help decrease cold start time, including pulling from prewarmed placeholder functions that already have the host and language processes running. |
9495

9596
## Service limits
9697

@@ -117,16 +118,16 @@ For a direct cost comparison between dynamic hosting plans (Consumption, Flex Co
117118

118119
In some cases, when trying to create a new hosting plan for your function app in an existing resource group you might receive one of the following errors:
119120

120-
* The pricing tier is not allowed in this resource group
121-
* <SKU_name> workers are not available in resource group <resource_group_name>
121+
* The pricing tier isn't allowed in this resource group
122+
* <SKU_name> workers aren't available in resource group <resource_group_name>
122123

123124
This can happen when the following conditions are met:
124125

125126
* You create a function app in an existing resource group that has ever contained another function app or web app. For example, Linux Consumption apps aren't supported in the same resource group as Linux Dedicated or Linux Premium plans.
126127
* Your new function app is created in the same region as the previous app.
127128
* The previous app is in some way incompatible with your new app. This error can happen between SKUs, operating systems, or due to other platform-level features, such as availability zone support.
128129

129-
The reason this happens is due to how function app and web app plans are mapped to different pools of resources when being created. Different SKUs require a different set of infrastructure capabilities. When you create an app in a resource group, that resource group is mapped and assigned to a specific pool of resources. If you try to create another plan in that resource group and the mapped pool does not have the required resources, this error occurs.
130+
The reason this happens is due to how function app and web app plans are mapped to different pools of resources when being created. Different SKUs require a different set of infrastructure capabilities. When you create an app in a resource group, that resource group is mapped and assigned to a specific pool of resources. If you try to create another plan in that resource group and the mapped pool doesn't have the required resources, this error occurs.
130131

131132
When this error occurs, instead create your function app and hosting plan in a new resource group.
132133

includes/functions-limits.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,45 +4,45 @@ ms.service: azure-functions
44
ms.custom:
55
- build-2024
66
ms.topic: include
7-
ms.date: 11/05/2024
7+
ms.date: 02/02/2025
88
ms.author: glenga
99
---
1010
| Resource |[Flex Consumption plan](/azure/azure-functions/flex-consumption-plan)|[Premium plan](/azure/azure-functions/functions-premium-plan)|[Dedicated plan](/azure/azure-functions/dedicated-plan)/[ASE](/azure/app-service/environment/intro)| [Container Apps](/azure/azure-functions/functions-container-apps-hosting)|[Consumption plan](/azure/azure-functions/consumption-plan)|
1111
| --- | --- | --- | --- | --- | --- |
12-
| Default [timeout duration](/azure/azure-functions/functions-scale#timeout) (min) | 30 | 30 |30<sup>1</sup> | 30<sup>16</sup> |5 |
13-
| Max [timeout duration](/azure/azure-functions/functions-scale#timeout) (min) | unbounded<sup>9</sup> | unbounded<sup>9</sup> | unbounded<sup>2</sup> | unbounded<sup>17</sup> |10 |
12+
| Default [time-out duration](/azure/azure-functions/functions-scale#timeout) (min) | 30 | 30 |30<sup>1</sup> | 30<sup>16</sup> |5 |
13+
| Max [time-out duration](/azure/azure-functions/functions-scale#timeout) (min) | unbounded<sup>9</sup> | unbounded<sup>9</sup> | unbounded<sup>2</sup> | unbounded<sup>17</sup> |10 |
1414
| Max outbound connections (per instance) | unbounded | unbounded | unbounded | unbounded |600 active (1200 total) |
1515
| Max request size (MB)<sup>3</sup> | 210 | 210 | 210 | 210 |210 |
1616
| Max query string length<sup>3</sup> | 4096 | 4096 | 4096 | 4096 | 4096 |
1717
| Max request URL length<sup>3</sup> | 8192 | 8192 | 8192 | 8192 | 8192 |
1818
|[ACU](/azure/virtual-machines/acu) per instance | 210-840 | 100-840/210-250<sup>10</sup> | [varies](/azure/container-apps/billing) |100 | varies |
19-
| Max memory (GB per instance) | 4<sup4</sup> | 3.5-14 | 1.75-256/8-256 | [varies](/azure/container-apps/billing) |1.5 |
20-
| Max instance count (Windows/Linux) | 100/20 | varies by SKU/100<sup>11</sup> | 10-300<sup>18</sup> | 200/100 | 1000 <sup>15</sup> |
21-
| Function apps per plan<sup>13</sup> | 100 | 100 | unbounded<sup>4</sup> | unbounded<sup>4</sup> |100 |
19+
| Max memory (GB per instance) | 4<sup>14</sup> | 3.5-14 | 1.75-256/8-256 | [varies](/azure/container-apps/billing) |1.5 |
20+
| Max instance count (Windows&nbsp;\|&nbsp;Linux) | n/a&nbsp;\|&nbsp;1000<sup>15</sup> | varies by S KU&nbsp;\|&nbsp;100<sup>11</sup> | 10-300<sup>18</sup> | 200&nbsp;\|&nbsp;100 | 1000 |
21+
| Function apps per plan<sup>13</sup> | 1 | 100 | unbounded<sup>4</sup> | unbounded<sup>4</sup> |100 |
2222
| [App Service plans](/azure/app-service/overview-hosting-plans) | n/a | 100 per resource group |100 per resource group | n/a | 100 per [region](https://azure.microsoft.com/global-infrastructure/regions/) |
2323
| [Deployment slots](/azure/azure-functions/functions-deployment-slots) per app<sup>12</sup> | n/a | 3 | 1-20<sup>11</sup> | not supported |2 |
2424
| Storage (temporary)<sup>5</sup> | 0.8 GB | 21-140 GB |11-140 GB | n/a |0.5 GB |
2525
| Storage (persisted) | 0 GB<sup>7</sup> | 250 GB |10-1000 GB<sup>11</sup> | n/a |1 GB<sup>6,7</sup> |
2626
| Custom domains per app</a> | 500 | 500 | 500 | not supported |500<sup>7</sup> |
27-
| Custom domain [SSL support](/azure/app-service/configure-ssl-bindings) | unbounded SNI SSL and 1 IP SSL connections included | unbounded SNI SSL and 1 IP SSL connections included |unbounded SNI SSL and 1 IP SSL connections included | not supported |unbounded SNI SSL connection included |
27+
| Custom domain [TSL/SSL support](/azure/app-service/configure-ssl-bindings) | unbounded SNI SSL and one IP SSL connection included | unbounded SNI SSL and one IP SSL connection included |unbounded SNI SSL and one IP SSL connection included | not supported |unbounded SNI SSL connection included |
2828

2929
Notes on service limits:
3030

31-
1. By default, the timeout for the Functions 1.x runtime in an App Service plan is unbounded.
31+
1. By default, the time-out for the Functions 1.x runtime in an App Service plan is unbounded.
3232
2. Requires the App Service plan be set to [Always On](/azure/azure-functions/dedicated-plan#always-on). Pay at standard [rates](https://azure.microsoft.com/pricing/details/app-service/). A grace period of 10 minutes is given during platform updates.
3333
3. These limits are [set in the host](https://github.com/Azure/azure-functions-host/blob/dev/src/WebJobs.Script.WebHost/web.config).
3434
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.
3535
5. The storage limit is the total content size in temporary storage across all apps in the same App Service plan. For Consumption plans on Linux, the storage is currently 1.5 GB.
3636
6. Consumption plan uses an Azure Files share for persisted storage. When you provide your own Azure Files share, the specific share size limits depend on the storage account you set for [WEBSITE_CONTENTAZUREFILECONNECTIONSTRING](/azure/azure-functions/functions-app-settings#website_contentazurefileconnectionstring).
3737
7. On Linux, you must [explicitly mount your own Azure Files share](/azure/azure-functions/storage-considerations#mount-file-shares).
3838
8. When your function app is hosted in a [Consumption plan](/azure/azure-functions/consumption-plan), only the CNAME option is supported. For function apps in a [Premium plan](/azure/azure-functions/functions-premium-plan) or an [App Service plan](/azure/azure-functions/dedicated-plan), you can map a custom domain using either a CNAME or an A record.
39-
9. There is no maximum execution timeout duration enforced. However, the grace period given to a function execution is 60 minutes [during scale in](../articles/azure-functions/event-driven-scaling.md#scale-in-behaviors) and 10 minutes during platform updates.
39+
9. There's no maximum execution time-out duration enforced. However, the grace period given to a function execution is 60 minutes [during scale in](../articles/azure-functions/event-driven-scaling.md#scale-in-behaviors) and 10 minutes during platform updates.
4040
10. Workers are roles that host customer apps. Workers are available in three fixed sizes: One vCPU/3.5 GB RAM; Two vCPU/7 GB RAM; Four vCPU/14 GB RAM.
4141
11. See [App Service limits](/azure/azure-resource-manager/management/azure-subscription-service-limits#app-service-limits) for details.
4242
12. Including the production slot.
43-
13. There's currently a limit of 5000 function apps in a given subscription.
43+
13. There's currently a limit of 5,000 function apps in a given subscription.
4444
14. Flex Consumption plan instance sizes are currently defined as either 2,048 MB or 4,096 MB. For more information, see [Instance memory](/azure/azure-functions/flex-consumption-plan#instance-memory).
4545
15. Flex Consumption plan has a regional subscription quota that limits the total memory usage of all instances across a given region. For more information, see [Instance memory](/azure/azure-functions/flex-consumption-plan#instance-memory).
46-
16. When the [minimum number of replicas](/azure/container-apps/scale-app#scale-definition) is set to zero, the default timeout depends on the specific triggers used in the app.
46+
16. When the [minimum number of replicas](/azure/container-apps/scale-app#scale-definition) is set to zero, the default time-out depends on the specific triggers used in the app.
4747
17. When the [minimum number of replicas](../articles/container-apps/scale-app.md#scale-definition) is set to one or more.
4848
18. On Container Apps, you can set the [maximum number of replicas](/azure/container-apps/scale-app#scale-definition), which is honored as long as there's enough cores quota available.

0 commit comments

Comments
 (0)