Escalado y hospedaje de Azure FunctionsAzure Functions scale and hosting

Las funciones de Azure se ejecuta en dos planes distintos: Plan de consumo y plan Premium (versión preliminar pública).Azure Functions runs in two different plans: Consumption plan and Premium plan (public preview). El plan de consumo agrega automáticamente la capacidad de proceso cuando se ejecuta el código.The Consumption plan automatically adds compute power when your code is running. La aplicación se escala horizontalmente cuando es necesario para administrar la carga y reducir verticalmente cuando se detiene la ejecución de código.Your app is scaled out when needed to handle load, and scaled down when code stops running. No tiene que pagar por VM inactivas ni reservar capacidad de antemano.You don't have to pay for idle VMs or reserve capacity in advance. El plan Premium también automáticamente escalar y agregar capacidad de proceso adicional cuando se ejecuta el código.The Premium plan will also automatically scale and add additional compute power when your code is running. El plan Premium incluye características adicionales, como instancias de proceso premium, la capacidad de conservar las instancias semiactiva indefinidamente y conectividad de red virtual.The Premium plan comes with additional features like premium compute instances, the ability to keep instances warm indefinitely, and VNet connectivity. Si tiene un Plan de App Service, también puede ejecutar las aplicaciones de función dentro de ellos.If you have an existing App Service Plan, you can also run your function apps within them.

Nota

Ambos plan Premium y plan de consumo para Linux están actualmente en versión preliminar.Both Premium plan and Consumption plan for Linux are currently in preview.

Si todavía no está familiarizado con Azure Functions, vea la Información general sobre Azure Functions.If you aren't familiar with Azure Functions, see the Azure Functions overview.

Cuando crea una aplicación de función, elige un plan de hospedaje para las funciones en la aplicación.When you create a function app, you choose the hosting plan for functions in the app. En ambos planes, las funciones se ejecutan en una instancia del host de Azure Functions.In either plan, an instance of the Azure Functions host executes the functions. El tipo de plan controla:The type of plan controls:

  • Cómo se escalan horizontalmente las instancias de host.How host instances are scaled out.
  • Los recursos que están disponibles para cada host.The resources that are available to each host.
  • Características de instancia como conectividad de red virtual.Instance features like VNet connectivity.

Nota

Puede cambiar entre los planes de consumo y Premium cambiando la propiedad del plan del recurso de aplicación de función.You can switch between Consumption and Premium plans by changing the plan property of the function app resource.

Plan de consumoConsumption plan

Cuando se usa el plan de consumo, las instancias del host de Azure Functions se agregan dinámicamente y se quitan en función del número de eventos de entrada.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. Este plan sin servidor se escala automáticamente y solo se le cobra por los recursos de proceso cuando se ejecutan las funciones.This serverless plan scales automatically, and you're charged for compute resources only when your functions are running. En un plan de consumo, se agota el tiempo de espera de una ejecución de función tras un período de tiempo configurable.On a Consumption plan, a function execution times out after a configurable period of time.

La facturación se basa en el número de ejecuciones, el tiempo de ejecución y el uso de la memoria.Billing is based on number of executions, execution time, and memory used. La facturación es un agregado de todas las funciones dentro de la aplicación de función.Billing is aggregated across all functions within a function app. Para más información, consulte la página de precios de Azure Functions.For more information, see the Azure Functions pricing page.

El plan de consumo es el plan de hospedaje predeterminado y ofrece las siguientes ventajas:The Consumption plan is the default hosting plan and offers the following benefits:

  • Pague solo cuando se ejecutan las funciones.Pay only when your functions are running.
  • Escale horizontalmente de forma automática, incluso durante períodos de gran carga.Scale out automatically, even during periods of high load.

Plan Premium (versión preliminar)Premium plan (public preview)

Cuando se usa el plan Premium, las instancias del host de Azure Functions se agregan rápidamente y se quitan en función del número de eventos de entrada al igual que el plan de consumo.When you're using the Premium plan, instances of the Azure Functions host are rapidly added and removed based on the number of incoming events just like the consumption plan. Sin embargo, el plan Premium también ofrece:However, the Premium plan also offers:

  • Instancias siempre activos para evitar cualquier inicio en frío.Always warm instances to avoid any cold start.
  • Conectividad de red virtual.VNet connectivity.
  • Duración de ejecución ilimitado.Unlimited execution duration.
  • Tamaños de instancia Premium (un núcleo, cuatro instancias de núcleo y dos núcleos).Premium instance sizes (one core, two core, and four core instances).
  • Opciones de precios de predicción.Predictable pricing options.
  • Asignación de aplicación de alta densidad para los planes con varias aplicaciones de función.High-density app allocation for plans with multiple function apps.

Puede encontrar información sobre cómo configurar estas opciones en el plan premium de Azure Functions.Information on how you can configure these options can be found in the Azure Functions premium plan.

En lugar de facturación por ejecución y memoria utilizada, la facturación se basa en el número de núcleos por segundo y GB-segundos usar entre las instancias reservadas y necesarias.Instead of billing per execution and memory consumed, billing is based on the number of core seconds and GB seconds used across needed and reserved instances. Al menos una instancia es necesaria que sea caliente en todo momento, existe un costo mensual fijo por plan que está activo (independientemente del número de ejecuciones).At least one instance is required to be warm at all times, so there is a fixed monthly cost per plan that is active (regardless of the number of executions).

Tenga en cuenta el plan premium de Azure Functions en los casos siguientes:Consider the Azure Functions premium plan in the following cases:

  • La aplicación de función se ejecuta de forma continua, o casi continua.Your function apps run continuously, or nearly continuously. En este caso, un plan de App Service puede ser más rentable.In this case, an App Service Plan can be more cost-effective.
  • Necesita más opciones de CPU o memoria que las que proporciona el plan de consumo.You need more CPU or memory options than what is provided on the Consumption plan.
  • El código necesita ejecuciones que superan el tiempo de ejecución máximo permitido en el plan de consumo.Your code needs to run longer than the maximum execution time allowed on the Consumption plan.
  • Necesita características que solo están disponibles en un plan de App Service, como la compatibilidad con el entorno de App Service, la conectividad VNET/VPN y mayores tamaños de máquina virtual.You require features that are only available on an App Service plan, such as support for App Service Environment, VNET/VPN connectivity, and larger VM sizes.

Nota

La vista previa del plan premium admite actualmente las funciones que se ejecutan en. NET, nodo o Java a través de la infraestructura de Windows.The premium plan preview currently supports functions running in .NET, Node, or Java through Windows infrastructure.

Al ejecutar las funciones de JavaScript en un plan Premium, debe elegir una instancia con menos vCPU.When running JavaScript functions on a Premium plan, you should choose an instance that has fewer vCPUs. Para obtener más información, consulte el elija los planes Premium de núcleo único.For more information, see the Choose single-core Premium plans.

Plan del servicio de aplicacionesApp Service plan

También pueden ejecutar las aplicaciones de función en las mismas de máquinas virtuales dedicadas como otras aplicaciones de App Service (Basic, Standard, Premium y las SKU aisladas).Your function apps can also run on the same dedicated VMs as other App Service apps (Basic, Standard, Premium, and Isolated SKUs). Los planes de App Service admiten Linux.App Service plans support Linux.

Considere el plan de App Service en los casos siguientes:Consider an App Service plan in the following cases:

  • Tiene máquinas virtuales infrautilizadas que ya ejecutan otras instancias de App Service.You have existing, underutilized VMs that are already running other App Service instances.
  • Quiere ejecutar la aplicación de función en Linux o quiere proporcionar una imagen personalizada en la cual ejecutar las funciones.You want to run your function app on Linux, or you want to provide a custom image on which to run your functions.

Se paga el mismo para las aplicaciones de función en un Plan de App Service como lo haría para otros recursos de App Service, como aplicaciones web.You pay the same for function apps in an App Service Plan as you would for other App Service resources, like web apps. Para más información acerca del funcionamiento del plan de App Service, consulte Introducción detallada sobre los planes de Azure App Service.For details about how the App Service plan works, see the Azure App Service plans in-depth overview.

Con un plan de App Service, se puede escalar horizontalmente de forma manual mediante la incorporación de más instancias de máquina virtual o se puede habilitar el escalado automático.With an App Service plan, you can manually scale out by adding more VM instances, or you can enable autoscale. Para obtener más información, consulte Escalación del recuento de instancias de forma manual o automática.For more information, see Scale instance count manually or automatically. También puede escalar verticalmente eligiendo un plan de App Service diferente.You can also scale up by choosing a different App Service plan. Vea Escalado vertical de aplicaciones en Azure para obtener más información.For more information, see Scale up an app in Azure.

Al ejecutar funciones de JavaScript en un plan de App Service, debe elegir un plan con menos vCPU.When running JavaScript functions on an App Service plan, you should choose a plan that has fewer vCPUs. Para obtener más información, consulte elija planes de App Service solo núcleo.For more information, see Choose single-core App Service plans.

Siempre activadoAlways On

Si se ejecuta en un plan de App Service, debe habilitar la configuración Always On para que la aplicación de función se ejecute correctamente.If you run on an App Service plan, you should enable the Always on setting so that your function app runs correctly. En un plan de App Service, el tiempo de ejecución de las funciones queda inactivo después de unos minutos de inactividad, por lo que solo los desencadenadores HTTP podrán "reactivar" las funciones.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. Always On solo está disponible en un plan de App Service.Always on is available only on an App Service plan. En un plan de consumo, la plataforma activa automáticamente las aplicaciones de función.On a Consumption plan, the platform activates function apps automatically.

Duración de tiempo de espera de aplicación de funciónFunction app timeout duration

La duración de tiempo de espera de una aplicación de función se define mediante la propiedad functionTimeout en el host.json archivo de proyecto.The timeout duration of a function app is defined by the functionTimeout property in the host.json project file. En la siguiente tabla muestra los valores predeterminado y máximo en minutos para ambos planes y en ambas versiones en tiempo de ejecución:The following table shows the default and maximum values in minutes for both plans and in both runtime versions:

PlanPlan Versión en tiempo de ejecuciónRuntime Version Valor predeterminadoDefault MáximoMaximum
ConsumoConsumption 1.x1.x 55 1010
ConsumoConsumption 2.x2.x 55 1010
App ServiceApp Service 1.x1.x Sin límiteUnlimited Sin límiteUnlimited
App ServiceApp Service 2.x2.x 3030 Sin límiteUnlimited

Nota

Independientemente de la configuración de tiempo de espera de aplicación de función, 230 segundos es la cantidad máxima de tiempo que puede llevar a una función desencadenada por HTTP para responder a una solicitud.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. Esto es debido el predeterminado de tiempo de espera de inactividad del equilibrador de carga de Azure.This is because of the default idle timeout of Azure Load Balancer. Para los tiempos de procesamiento más largos, considere el uso de la patrón asincrónico de Durable Functions o aplazar el trabajo real y devolver una respuesta inmediata.For longer processing times, consider using the Durable Functions async pattern or defer the actual work and return an immediate response.

¿Cuál es mi plan de hospedaje?What is my hosting plan

Para determinar el plan de hospedaje utilizado por la aplicación de función, consulte Plan de App Service/plan de tarifa en la pestaña Introducción para la aplicación de función en Azure Portal.To determine the hosting plan used by your function app, see App Service plan / pricing tier in the Overview tab for the function app in the Azure portal. Los planes de App Service, también se indica el plan de tarifa.For App Service plans, the pricing tier is also indicated.

Vista del plan de escalado en el portal

También puede usar la CLI de Azure para determinar el plan, como sigue: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

Cuando el resultado de este comando es dynamic, la aplicación de función está en el plan de consumo.When the output from this command is dynamic, your function app is in the Consumption plan. Cuando el resultado de este comando es ElasticPremium, la aplicación de función está en el plan Premium.When the output from this command is ElasticPremium, your function app is in the Premium plan. Todos los demás valores indican los niveles de un plan de App Service.All other values indicate tiers of an App Service plan.

Incluso con Always On habilitado, el tiempo de espera de ejecución para las funciones individuales se controla mediante la opción functionTimeout en el archivo de proyecto host.json.Even with Always On enabled, the execution timeout for individual functions is controlled by the functionTimeout setting in the host.json project file.

Requisitos de la cuenta de almacenamientoStorage account requirements

En cualquier plan, una aplicación de función requiere una cuenta de Azure Storage general que admite el almacenamiento de Azure Blob, cola, tabla y archivos.On any plan, a function app requires a general Azure Storage account, which supports Azure Blob, Queue, Files, and Table storage. Esto es porque las funciones basan en el almacenamiento de Azure para operaciones como la administración de desencadenadores y las ejecuciones de la función de registro, pero algunas cuentas de almacenamiento no admiten las colas y tablas.This is because Functions rely on Azure Storage for operations such as managing triggers and logging function executions, but some storage accounts do not support queues and tables. Estas cuentas, que incluyen las cuentas de almacenamiento solo para blobs (incluido almacenamiento Premium) y las cuentas de almacenamiento de uso general con replicación de almacenamiento con redundancia de zona, se filtran horizontalmente de las selecciones de Cuenta de almacenamiento existentes cuando se crea una aplicación de función.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.

Para obtener más información sobre los tipos de cuenta de almacenamiento, vea Introducción de los servicios Azure Storage.To learn more about storage account types, see Introducing the Azure Storage services.

Cómo funcionan los planes de consumo y premiumHow the consumption and premium plans work

En el consumo y los planes premium, el controlador de escalado escala automáticamente recursos de CPU y memoria mediante la adición de instancias adicionales de lo host de Functions, en función del número de eventos desencadenados por sus funciones.In the consumption and premium plans, the scale controller automatically 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. Cada instancia del host de funciones en el plan de consumo se limita a 1,5 GB de memoria y 1 CPU.Each instance of the Functions host in the consumption plan is limited to 1.5 GB of memory and 1 CPU. Una instancia del host es la aplicación de función completa, lo que significa que todas las funciones dentro de un recurso compartido de aplicación de función en una instancia y escala al mismo tiempo.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. Aplicaciones de función que comparten el mismo plan de consumo se escalan de forma independiente.Function apps that share the same consumption plan are scaled independently. En el plan premium, el tamaño de plan determinará la memoria disponible y la CPU para todas las aplicaciones de ese plan en esa instancia.In the premium plan, your plan size will determine the available memory and CPU for all apps in that plan on that instance.

Los archivos de código de función se almacenan en recursos compartidos de archivos de Azure en la cuenta de almacenamiento principal de la función.Function code files are stored on Azure Files shares on the function's main storage account. Al eliminarse la cuenta de almacenamiento principal de la aplicación de función, los archivos de código de función también se eliminan y no se pueden recuperar.When you delete the main storage account of the function app, the function code files are deleted and cannot be recovered.

Nota

Al usar un desencadenador de blobs en un plan de consumo, puede haber un retraso de hasta 10 minutos en el procesamiento de nuevos blobs.When you're using a blob trigger on a Consumption plan, there can be up to a 10-minute delay in processing new blobs. Este retraso se produce cuando una aplicación de función ha quedado inactiva.This delay occurs when a function app has gone idle. Después de que se ejecute la aplicación de función, los blobs se procesan inmediatamente.After the function app is running, blobs are processed immediately. Para evitar este retraso de inicio en frío, use el plan Premium, o usar el desencadenador de Event Grid.To avoid this cold-start delay, use the Premium plan, or use the Event Grid trigger. Para más información, consulte el artículo de referencia sobre los enlaces del desencadenador de blob.For more information, see the blob trigger binding reference article.

Escalado del entorno de tiempo de ejecuciónRuntime scaling

Azure Functions usa un componente denominado controlador de escala para supervisar la tasa de eventos y determinar si se debe escalar o reducir horizontalmente.Azure Functions uses a component called the scale controller to monitor the rate of events and determine whether to scale out or scale in. El controlador de escala usa la heurística para cada tipo de desencadenador.The scale controller uses heuristics for each trigger type. Por ejemplo, al usar un desencadenador de Azure Queue Storage, se escala en función de la longitud de la cola y la antigüedad del mensaje más antiguo de la cola.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.

La unidad de escalado es la aplicación de función.The unit of scale is the function app. Al escalar horizontalmente la aplicación de función, se asignan recursos adicionales para ejecutar varias instancias del host de Azure Functions.When the function app is scaled out, additional resources are allocated to run multiple instances of the Azure Functions host. Por el contrario, si la demanda se reduce, el controlador de escala elimina instancias del host de la función.Conversely, as compute demand is reduced, the scale controller removes function host instances. El número de instancias se reduce verticalmente hasta cero cuando no se ejecuta ninguna función en la aplicación de función.The number of instances is eventually scaled down to zero when no functions are running within a function app.

Controlador de escala que supervisa los eventos y la creación de instancias

Descripción de los comportamientos de escaladoUnderstanding scaling behaviors

El escalado puede variar en función de varios factores, y realizarse de forma diferente según el desencadenador y el idioma seleccionados.Scaling can vary on a number of factors, and scale differently based on the trigger and language selected. No obstante, hay algunos aspectos del escalado que existen actualmente en el sistema:However there are a few aspects of scaling that exist in the system today:

  • Una aplicación de función única solo se escala verticalmente hasta un máximo de 200 instancias.A single function app only scales up to a maximum of 200 instances. Una única instancia puede procesar más de un mensaje o solicitud a la vez, por lo que no hay un límite establecido en el número de ejecuciones simultáneas.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.
  • Para los desencadenadores HTTP, nuevas instancias solo se asignarán a lo sumo una vez cada segundo.For HTTP triggers, new instances will only be allocated at most once every 1 second.
  • Para los desencadenadores que no son HTTP, nuevas instancias solo se asignarán a lo sumo una vez cada 30 segundos.For non-HTTP triggers, new instances will only be allocated at most once every 30 seconds.

Diferentes desencadenadores pueden también tener distintos límites de escalado como se describe a continuación:Different triggers may also have different scaling limits as well as documented below:

Procedimientos recomendados y patrones para aplicaciones escalablesBest practices and patterns for scalable apps

Hay muchos aspectos de una aplicación de función que afectarán a cómo se escala esta, incluida la configuración del host, la superficie del sistema de tiempo de ejecución y la eficacia de los recursos.There are many aspects of a function app that will impact how well it will scale, including host configuration, runtime footprint, and resource efficiency. Para obtener más información, consulte la sección de escalabilidad del artículo sobre consideraciones de rendimiento.For more information, see the scalability section of the performance considerations article. También debe tener en cuenta cómo se comportan las conexiones a medida que la aplicación de función se escala.You should also be aware of how connections behave as your function app scales. Para más información, consulte How to manage connections in Azure Functions (Administración de conexiones en Azure Functions).For more information, see How to manage connections in Azure Functions.

Modelo de facturaciónBilling model

La facturación del plan de consumo se describe de manera detallada en la página de precios de Azure Functions.Billing for the Consumption plan is described in detail on the Azure Functions pricing page. El uso se agrega en el nivel de la aplicación de función, y solo se cuenta el tiempo que el código de la función está en ejecución.Usage is aggregated at the function app level and counts only the time that function code is executed. Estas son las unidades de facturación:The following are units for billing:

  • Consumo de recursos en gigabytes-segundo (GB-s).Resource consumption in gigabyte-seconds (GB-s). Se calcula como una combinación del tamaño de la memoria y el tiempo de ejecución de todas las funciones de una aplicación de función.Computed as a combination of memory size and execution time for all functions within a function app.
  • Ejecuciones.Executions. Se cuenta cada vez que se ejecuta una función en respuesta a un desencadenador de eventos.Counted each time a function is executed in response to an event trigger.

Puede encontrar consultas útiles y obtener información sobre cómo comprender la factura de consumo en las preguntas más frecuentes de facturación.Useful queries and information on how to understand your consumption bill can be found on the billing FAQ.

Límites de servicioService limits

En la tabla siguiente indica los límites que se aplican a las aplicaciones de función cuando se ejecuta en los diversos planes de hospedaje:The following table indicates the limits that apply to function apps when running in the various hosting plans:

RecursoResource Plan de consumoConsumption plan Plan PremiumPremium plan Plan de App Service1App Service plan1
Escalado horizontalScale out Basado en eventosEvent driven Basado en eventosEvent driven Manual o escalabilidad automáticaManual/autoscale
Instancias máximasMax instances 200200 2020 10-2010-20
Duración de tiempo de espera predeterminada (min)Default time out duration (min) 55 3030 302302
Duración de tiempo de espera máxima (min)Max time out duration (min) 1010 sin enlazarunbounded sin enlazar3unbounded3
Número máximo de conexiones salientes (por instancia)Max outbound connections (per instance) 600 activas (1200 en total)600 active (1200 total) sin enlazarunbounded sin enlazarunbounded
Tamaño máximo de la solicitud (MB)4Max request size (MB)4 100100 100100 100100
Longitud máxima de la cadena de consulta4Max query string length4 40964096 40964096 40964096
Longitud máxima de URL de solicitud4Max request URL length4 81928192 81928192 81928192
ACU por instanciaACU per instance 100100 210-840210-840 100-840100-840
Memoria máxima (GB por instancia)Max memory (GB per instance) 1.51.5 3,5-143.5-14 1,75-141.75-14
Aplicaciones de funciones por planFunction apps per plan 100100 100100 sin enlazar5unbounded5
Planes de App ServiceApp Service plans 100 por región100 per region 100 por grupo de recursos100 per resource group 100 por grupo de recursos100 per resource group
Almacenamiento6Storage6 1 GB1 GB 250 GB250 GB 50-1000 GB50-1000 GB
Dominios personalizados por aplicaciónCustom domains per app 50075007 500500 500500
Compatibilidad con dominio Compatibilidad con SSLCustom domain SSL support conexión SNI SSL sin enlazar incluidaunbounded SNI SSL connection included conexiones SNI SSL ilimitadas y 1 conexión SSL de IP incluidasunbounded SNI SSL and 1 IP SSL connections included conexiones SNI SSL ilimitadas y 1 conexión SSL de IP incluidasunbounded SNI SSL and 1 IP SSL connections included

1 Para conocer los límites específicos de las distintas opciones de plan de App Service, consulte Límites del plan de App Service.1 For specific limits for the various App Service plan options, see the App Service plan limits.
2 De manera predeterminada, el tiempo de espera para el tiempo de ejecución de Functions 1.x en un plan de App Service no está enlazado.2 By default, the timeout for the Functions 1.x runtime in an App Service plan is unbounded.
3 Requiere que el plan de App Service se establezca en Always On.3 Requires the App Service plan be set to Always On. Abonar según las tarifas estándar.Pay at standard rates.
4 Estos límites se establecen en el host.4 These limits are set in the host.
5 El número real de aplicaciones de funciones que puede hospedar depende de la actividad de las aplicaciones, el tamaño de las instancias de máquina y la utilización de recursos correspondiente.5 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. 6 El límite de almacenamiento es el tamaño total del almacenamiento temporal entre todas las aplicaciones en el mismo plan de App Service.6 The storage limit is the total content size in temporary storage across all apps in the same App Service plan. El plan de consumo usa Azure Files para el almacenamiento temporal.Consumption plan uses Azure Files for temporary storage.
7 Cuando la aplicación de funciones se hospeda en un plan de consumo, solo se admite solo la opción CNAME.7 When your function app is hosted in a Consumption plan, only the CNAME option is supported. Para aplicaciones de funciones se hospedan en un plan Premium o en un plan de App Service, puede asignar un dominio personalizado mediante un CNAME o un registro 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.