Stima dei costi del piano a consumoEstimating Consumption plan costs

Esistono attualmente tre tipi di piani di hosting per un'app in esecuzione in funzioni di Azure, ognuno dei quali ha un proprio modello di determinazione dei prezzi:There are currently three types of hosting plans for an app that runs in Azure Functions, with each plan having its own pricing model:

PianificarePlan DescriptionDescription
ConsumoConsumption Viene addebitato solo il tempo di esecuzione dell'app per le funzioni.You're only charged for the time that your function app runs. Questo piano include unapagina dei prezzi di [concessione gratuita]per ogni sottoscrizione.This plan includes a free grant on a per subscription basis.
PremiumPremium Fornisce le stesse funzionalità e il meccanismo di scalabilità del piano a consumo, ma con prestazioni migliorate e accesso VNET.Provides you with the same features and scaling mechanism as the Consumption plan, but with enhanced performance and VNET access. Il costo si basa sul piano tariffario scelto.Cost is based on your chosen pricing tier. Per altre informazioni, vedere piano Premium di funzioni di Azure.To learn more, see Azure Functions Premium plan.
Dedicato (servizio app) Dedicated (App Service)
(livello Basic o superiore)(basic tier or higher)
Quando è necessario eseguire in macchine virtuali dedicate o in isolamento, usare immagini personalizzate oppure usare la capacità del piano di servizio app in eccesso.When you need to run in dedicated VMs or in isolation, use custom images, or want to use your excess App Service plan capacity. Usa la fatturazione normale del piano di servizio app.Uses regular App Service plan billing. Il costo si basa sul piano tariffario scelto.Cost is based on your chosen pricing tier.

Si è scelto il piano che meglio supporta le prestazioni della funzione e i requisiti di costo.You chose the plan that best supports your function performance and cost requirements. Per altre informazioni, vedere Ridimensionamento e hosting di Funzioni di Azure.To learn more, see Azure Functions scale and hosting.

Questo articolo riguarda solo il piano a consumo, perché questo piano comporta costi variabili.This article deals only with the Consumption plan, since this plan results in variable costs. Questo articolo sostituisce l'articolo relativo alle domande frequenti sulla fatturazione dei costi del piano a consumo .This article supersedes the Consumption plan cost billing FAQ article.

Durable Functions possono anche essere eseguiti in un piano a consumo.Durable Functions can also run in a Consumption plan. Per ulteriori informazioni sulle considerazioni sui costi quando si utilizza Durable Functions, vedere Durable Functions fatturazione.To learn more about the cost considerations when using Durable Functions, see Durable Functions billing.

Costi del piano a consumoConsumption plan costs

Il costo di esecuzione di una singola esecuzione di funzione viene misurato in GB-secondi.The execution cost of a single function execution is measured in GB-seconds. Il costo di esecuzione viene calcolato combinando l'utilizzo della memoria con il relativo tempo di esecuzione.Execution cost is calculated by combining its memory usage with its execution time. Funzione che viene eseguita per più costi più lunghi, così come una funzione che utilizza più memoria.A function that runs for longer costs more, as does a function that consumes more memory.

Si consideri un caso in cui la quantità di memoria utilizzata dalla funzione rimane costante.Consider a case where the amount of memory used by the function stays constant. In questo caso, il calcolo del costo è una semplice moltiplicazione.In this case, calculating the cost is simple multiplication. Ad esempio, supponiamo che la funzione abbia utilizzato 0,5 GB per 3 secondi.For example, say that your function consumed 0.5 GB for 3 seconds. Il costo di esecuzione viene quindi 0.5GB * 3s = 1.5 GB-seconds.Then the execution cost is 0.5GB * 3s = 1.5 GB-seconds.

Poiché le modifiche all'utilizzo della memoria nel tempo, il calcolo è essenzialmente l'integrale dell'utilizzo della memoria nel tempo.Since memory usage changes over time, the calculation is essentially the integral of memory usage over time. Il sistema esegue questo calcolo campionando l'utilizzo della memoria del processo (insieme ai processi figlio) a intervalli regolari.The system does this calculation by sampling the memory usage of the process (along with child processes) at regular intervals. Come indicato nella pagina dei prezzi, l'utilizzo della memoria viene arrotondato per eccesso al bucket 128 MB più vicino.As mentioned on the pricing page, memory usage is rounded up to the nearest 128-MB bucket. Quando il processo utilizza 160 MB, viene addebitato il costo di 256 MB.When your process is using 160 MB, you're charged for 256 MB. Il calcolo prende in considerazione la concorrenza, ovvero più esecuzioni di funzioni simultanee nello stesso processo.The calculation takes into account concurrency, which is multiple concurrent function executions in the same process.

Nota

Anche se l'utilizzo della CPU non è direttamente considerato nei costi di esecuzione, può influire sul costo quando influisce sul tempo di esecuzione della funzione.While CPU usage isn't directly considered in execution cost, it can have an impact on the cost when it affects the execution time of the function.

Quando si stima il costo complessivo per l'esecuzione delle funzioni in qualsiasi piano, tenere presente che il runtime di funzioni usa diversi altri servizi di Azure, ognuno dei quali viene fatturato separatamente.When estimating the overall cost of running your functions in any plan, remember that the Functions runtime uses several other Azure services, which are each billed separately. Quando si calcolano i prezzi per le app per le funzioni, tutti i trigger e le associazioni che si integrano con altri servizi di Azure richiedono la creazione e il pagamento di tali servizi aggiuntivi.When calculating pricing for function apps, any triggers and bindings you have that integrate with other Azure services require you to create and pay for those additional services.

Per le funzioni in esecuzione in un piano a consumo, il costo totale è il costo di esecuzione delle funzioni, oltre al costo della larghezza di banda e dei servizi aggiuntivi.For functions running in a Consumption plan, the total cost is the execution cost of your functions, plus the cost of bandwidth and additional services.

Quando si stimano i costi complessivi dell'app per le funzioni e dei servizi correlati, usare il calcolatore dei prezzi di Azure.When estimating the overall costs of your function app and related services, use the Azure pricing calculator.

Costo correlatoRelated cost DescriptionDescription
Account di archiviazioneStorage account Per ogni app per le funzioni è necessario avere un account di archiviazione di Azureassociato per utilizzo generico, fatturato separatamente.Each function app requires that you have an associated General Purpose Azure Storage account, which is billed separately. Questo account viene utilizzato internamente dal runtime di funzioni, ma è possibile utilizzarlo anche per i trigger e le associazioni di archiviazione.This account is used internally by the Functions runtime, but you can also use it for Storage triggers and bindings. Se non si ha un account di archiviazione, ne viene creato uno automaticamente quando viene creata l'app per le funzioni.If you don't have a storage account, one is created for you when the function app is created. Per altre informazioni, vedere requisiti dell'account di archiviazione.To learn more, see Storage account requirements.
Application InsightsApplication Insights Si basa su Application Insights per offrire un'esperienza di monitoraggio ad alte prestazioni per le app per le funzioni.Functions relies on Application Insights to provide a high-performance monitoring experience for your function apps. Sebbene non sia necessario, è necessario abilitare l'integrazione Application Insights.While not required, you should enable Application Insights integration. Ogni mese viene inclusa una concessione gratuita dei dati di telemetria.A free grant of telemetry data is included every month. Per altre informazioni, vedere la pagina dei prezzi di monitoraggio di Azure.To learn more, see the Azure Monitor pricing page.
Larghezza di banda di reteNetwork bandwidth Non si paga per il trasferimento dei dati tra i servizi di Azure nella stessa area.You don't pay for data transfer between Azure services in the same region. Tuttavia, è possibile sostenere i costi per i trasferimenti di dati in uscita in un'altra area o all'esterno di Azure.However, you can incur costs for outbound data transfers to another region or outside of Azure. Per altre informazioni, vedere Dettagli prezzi della larghezza di banda.To learn more, see Bandwidth pricing details.

Comportamenti che interessano il tempo di esecuzioneBehaviors affecting execution time

I comportamenti seguenti delle funzioni possono avere un effetto sul tempo di esecuzione:The following behaviors of your functions can impact the execution time:

  • Trigger e associazioni: il tempo impiegato per leggere l'input e scrivere l'output nelle associazioni di funzioni viene conteggiato come tempo di esecuzione.Triggers and bindings: The time taken to read input from and write output to your function bindings is counted as execution time. Ad esempio, quando la funzione usa un'associazione di output per scrivere un messaggio in una coda di archiviazione di Azure, il tempo di esecuzione include il tempo impiegato per scrivere il messaggio nella coda, incluso nel calcolo del costo della funzione.For example, when your function uses an output binding to write a message to an Azure storage queue, your execution time includes the time taken to write the message to the queue, which is included in the calculation of the function cost.

  • Esecuzione asincrona: il tempo di attesa della funzione per i risultati di una richiesta asincrona (await in C#) viene conteggiato come tempo di esecuzione.Asynchronous execution: The time that your function waits for the results of an async request (await in C#) is counted as execution time. Il calcolo di GB-secondo è basato sull'ora di inizio e di fine della funzione e sull'utilizzo della memoria per tale periodo.The GB-second calculation is based on the start and end time of the function and the memory usage over that period. Ciò che accade nel tempo in termini di attività della CPU non è incluso nel calcolo.What is happening over that time in terms of CPU activity isn't factored into the calculation. Potrebbe essere possibile ridurre i costi durante le operazioni asincrone utilizzando Durable Functions.You may be able to reduce costs during asynchronous operations by using Durable Functions. Non viene addebitato il tempo dedicato alle attese nelle funzioni dell'agente di orchestrazione.You're not billed for time spent at awaits in orchestrator functions.

Visualizza dati di esecuzioneView execution data

Nella fatturaè possibile visualizzare i dati relativi ai costi delle esecuzioni totali, funzioni e tempi di esecuzione, oltre ai costi effettivi fatturati.In your invoice, you can view the cost-related data of Total Executions - Functions and Execution Time - Functions, along with the actual billed costs. Tuttavia, i dati della fattura sono aggregati mensili per un periodo di fatturazione precedente.However, this invoice data is a monthly aggregate for a past invoice period.

Per comprendere meglio l'impatto sui costi delle funzioni, è possibile usare monitoraggio di Azure per visualizzare le metriche relative ai costi attualmente generate dalle app per le funzioni.To better understand the cost impact of your functions, you can use Azure Monitor to view cost-related metrics currently being generated by your function apps. Per ottenere questi dati, è possibile usare Esplora metriche di monitoraggio di Azure nella Azure portal o nelle API REST.You can use either Azure Monitor metrics explorer in the Azure portal or REST APIs to get this data.

Esplora metriche di monitoraggioMonitor metrics explorer

Usare Esplora metriche di monitoraggio di Azure per visualizzare i dati relativi ai costi per le app per le funzioni del piano a consumo in formato grafico.Use Azure Monitor metrics explorer to view cost-related data for your Consumption plan function apps in a graphical format.

  1. Nella parte superiore del Azure portal in Cerca servizi, risorse e documenti cercare monitor e selezionare monitoraggio in Servizi.At the top of the Azure portal in Search services, resources, and docs search for monitor and select Monitor under Services.

  2. A sinistra selezionare metrica > selezionare una risorsae quindi usare le impostazioni sotto l'immagine per scegliere l'app per le funzioni.At the left, select Metrics > Select a resource, then use the settings below the image to choose your function app.

    Selezionare la risorsa dell'app per le funzioni

    ImpostazioneSetting Valore consigliatoSuggested value DescriptionDescription
    SottoscrizioneSubscription Sottoscrizione in usoYour subscription Sottoscrizione con l'app per le funzioni.The subscription with your function app.
    Gruppo di risorseResource group Gruppo di risorse in usoYour resource group Il gruppo di risorse che contiene l'app per le funzioni.The resource group that contains your function app.
    Tipo di risorsaResource type Servizi appApp Services Le app per le funzioni vengono visualizzate come istanze di servizi app in monitoraggio.Function apps are shown as App Services instances in Monitor.
    GruppiResource App per le funzioniYour function app App per le funzioni da monitorare.The function app to monitor.
  3. Selezionare applica per scegliere l'app per le funzioni come risorsa da monitorare.Select Apply to choose your function app as the resource to monitor.

  4. Da metricascegliere Numero esecuzioni di funzioni e Sum per aggregazione.From Metric, choose Function Execution Count and Sum for Aggregation. In questo modo viene aggiunta la somma dei conteggi di esecuzione durante il periodo scelto al grafico.This adds the sum of the execution counts during chosen period to the chart.

    Definire una metrica dell'app per le funzioni da aggiungere al grafico

  5. Selezionare Aggiungi metrica e ripetere i passaggi 2-4 per aggiungere unità di esecuzione della funzione al grafico.Select Add metric and repeat steps 2-4 to add Function Execution Units to the chart.

Il grafico risultante contiene i totali per entrambe le metriche di esecuzione nell'intervallo di tempo scelto, che in questo caso è due ore.The resulting chart contains the totals for both execution metrics in the chosen time range, which in this case is two hours.

Grafico dei conteggi delle esecuzioni delle funzioni e delle unità di esecuzione

Poiché il numero di unità di esecuzione è molto superiore al numero di esecuzioni, il grafico mostra solo le unità di esecuzione.As the number of execution units is so much greater than the execution count, the chart just shows execution units.

Questo grafico mostra un totale di 1,11 miliardi Function Execution Units utilizzati in un periodo di due ore, misurato in MB-millisecondi.This chart shows a total of 1.11 billion Function Execution Units consumed in a two-hour period, measured in MB-milliseconds. Per eseguire la conversione in GB-secondi, dividere per 1024000.To convert to GB-seconds, divide by 1024000. In questo esempio l'app per le funzioni è stata usata 1110000000 / 1024000 = 1083.98 GB-secondi.In this example, the function app consumed 1110000000 / 1024000 = 1083.98 GB-seconds. È possibile utilizzare questo valore e moltiplicare per il prezzo corrente del tempo di esecuzione nelladei prezzi relativa alle pagina, che offre il costo di queste due ore, presupponendo che siano già state utilizzate concessioni gratuite del tempo di esecuzione.You can take this value and multiply by the current price of execution time on the Functions pricing page, which gives you the cost of these two hours, assuming you've already used any free grants of execution time.

Interfaccia della riga di comando di AzureAzure CLI

L' interfaccia della riga di comando di Azure include comandi per recuperare le metriche.The Azure CLI has commands for retrieving metrics. È possibile usare l'interfaccia della riga di comando da un ambiente di comando locale o direttamente dal portale usando Azure cloud Shell.You can use the CLI from a local command environment or directly from the portal using Azure Cloud Shell. Ad esempio, il comando AZ monitor Metrics list seguente restituisce i dati orari nello stesso periodo di tempo usato in precedenza.For example, the following az monitor metrics list command returns hourly data over same time period used before.

Assicurarsi di sostituire <AZURE_SUBSCRIPTON_ID> con l'ID sottoscrizione di Azure che esegue il comando.Make sure to replace <AZURE_SUBSCRIPTON_ID> with your Azure subscription ID running the command.

az monitor metrics list --resource /subscriptions/<AZURE_SUBSCRIPTION_ID>/resourceGroups/metrics-testing-consumption/providers/Microsoft.Web/sites/metrics-testing-consumption --metric FunctionExecutionUnits,FunctionExecutionCount --aggregation Total --interval PT1H --start-time 2019-09-11T21:46:00Z --end-time 2019-09-11T23:18:00Z

Questo comando restituisce un payload JSON simile all'esempio seguente:This command returns a JSON payload that looks like the following example:

{
  "cost": 0.0,
  "interval": "1:00:00",
  "namespace": "Microsoft.Web/sites",
  "resourceregion": "centralus",
  "timespan": "2019-09-11T21:46:00Z/2019-09-11T23:18:00Z",
  "value": [
    {
      "id": "/subscriptions/XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX/resourceGroups/metrics-testing-consumption/providers/Microsoft.Web/sites/metrics-testing-consumption/providers/Microsoft.Insights/metrics/FunctionExecutionUnits",
      "name": {
        "localizedValue": "Function Execution Units",
        "value": "FunctionExecutionUnits"
      },
      "resourceGroup": "metrics-testing-consumption",
      "timeseries": [
        {
          "data": [
            {
              "average": null,
              "count": null,
              "maximum": null,
              "minimum": null,
              "timeStamp": "2019-09-11T21:46:00+00:00",
              "total": 793294592.0
            },
            {
              "average": null,
              "count": null,
              "maximum": null,
              "minimum": null,
              "timeStamp": "2019-09-11T22:46:00+00:00",
              "total": 316576256.0
            }
          ],
          "metadatavalues": []
        }
      ],
      "type": "Microsoft.Insights/metrics",
      "unit": "Count"
    },
    {
      "id": "/subscriptions/XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX/resourceGroups/metrics-testing-consumption/providers/Microsoft.Web/sites/metrics-testing-consumption/providers/Microsoft.Insights/metrics/FunctionExecutionCount",
      "name": {
        "localizedValue": "Function Execution Count",
        "value": "FunctionExecutionCount"
      },
      "resourceGroup": "metrics-testing-consumption",
      "timeseries": [
        {
          "data": [
            {
              "average": null,
              "count": null,
              "maximum": null,
              "minimum": null,
              "timeStamp": "2019-09-11T21:46:00+00:00",
              "total": 33538.0
            },
            {
              "average": null,
              "count": null,
              "maximum": null,
              "minimum": null,
              "timeStamp": "2019-09-11T22:46:00+00:00",
              "total": 13040.0
            }
          ],
          "metadatavalues": []
        }
      ],
      "type": "Microsoft.Insights/metrics",
      "unit": "Count"
    }
  ]
}

Questa particolare risposta Mostra che dal 2019-09-11T21:46 al 2019-09-11T23:18, l'app ha utilizzato 1,11 miliardi MB-millisecondi (1083,98 GB-secondi).This particular response shows that from 2019-09-11T21:46 to 2019-09-11T23:18, the app consumed 1110000000 MB-milliseconds (1083.98 GB-seconds).

Determinare l'utilizzo della memoriaDetermine memory usage

Le unità di esecuzione della funzione sono una combinazione di tempo di esecuzione e di utilizzo della memoria, che lo rende una metrica complessa per comprendere l'utilizzo della memoria.Function execution units are a combination of execution time and your memory usage, which makes it a difficult metric for understanding memory usage. I dati di memoria non sono una metrica attualmente disponibile tramite monitoraggio di Azure.Memory data isn't a metric currently available through Azure Monitor. Tuttavia, se si vuole ottimizzare l'utilizzo della memoria dell'app, può usare i dati dei contatori delle prestazioni raccolti da Application Insights.However, if you want to optimize the memory usage of your app, can use the performance counter data collected by Application Insights.

Se non è già stato fatto, abilitare Application Insights nell'app per le funzioni.If you haven't already done so, enable Application Insights in your function app. Con questa integrazione abilitata, è possibile eseguire query sui dati di telemetria nel portale.With this integration enabled, you can query this telemetry data in the portal.

In monitoraggioselezionare log (Analytics) , quindi copiare la query di telemetria seguente e incollarla nella finestra di query e selezionare Esegui.Under Monitoring, select Logs (Analytics), then copy the following telemetry query and paste it into the query window and select Run. Questa query restituisce l'utilizzo totale della memoria per ogni tempo campione.This query returns the total memory usage at each sampled time.

performanceCounters
| where name == "Private Bytes"
| project timestamp, name, value

I risultati sono simili all'esempio seguente:The results look like the following example:

timestamp [UTC]timestamp [UTC] namename Valorevalue
9/12/2019, 1:05:14.947 AM9/12/2019, 1:05:14.947 AM Private BytesPrivate Bytes 209.932.288209,932,288
9/12/2019, 1:06:14.994 AM9/12/2019, 1:06:14.994 AM Private BytesPrivate Bytes 212.189.184212,189,184
9/12/2019, 1:06:30.0109/12/2019, 1:06:30.010 AM Private BytesPrivate Bytes 231.714.816231,714,816
9/12/2019, 1:07:15.040 AM9/12/2019, 1:07:15.040 AM Private BytesPrivate Bytes 210.591.744210,591,744
9/12/2019, 1:12:16.285 AM9/12/2019, 1:12:16.285 AM Private BytesPrivate Bytes 216.285.184216,285,184
9/12/2019, 1:12:31.376 AM9/12/2019, 1:12:31.376 AM Private BytesPrivate Bytes 235.806.720235,806,720

Metriche a livello di funzioneFunction-level metrics

Monitoraggio di Azure tiene traccia delle metriche a livello di risorsa, che per le funzioni è l'app per le funzioni.Azure Monitor tracks metrics at the resource level, which for Functions is the function app. Application Insights integrazione genera metriche per ogni singola funzione.Application Insights integration emits metrics on a per-function basis. Di seguito è riportato un esempio di query di analisi per ottenere la durata media di una funzione:Here's an example analytics query to get the average duration of a function:

customMetrics
| where name contains "Duration"
| extend averageDuration = valueSum / valueCount
| summarize averageDurationMilliseconds=avg(averageDuration) by name
namename averageDurationMillisecondsaverageDurationMilliseconds
AvgDurationMs QueueTriggerQueueTrigger AvgDurationMs 16.08716.087
MaxDurationMs QueueTriggerQueueTrigger MaxDurationMs 90.24990.249
MinDurationMs QueueTriggerQueueTrigger MinDurationMs 8.5228.522

Passaggi successiviNext steps