Stima dei costi del piano a consumo

Attualmente sono disponibili tre tipi di piani di hosting per un'app in esecuzione in Funzioni di Azure, con ogni piano con un proprio modello tariffario:

Pianificare Description
Consumo Viene addebitato solo il tempo di esecuzione dell'app per le funzioni. Questo piano include una concessione gratuita per sottoscrizione.
Premium Fornisce le stesse funzionalità e il meccanismo di ridimensionamento del piano di consumo, ma con prestazioni avanzate e accesso alla rete virtuale. Il costo è basato sul piano tariffario scelto. Per altre informazioni, vedere Funzioni di Azure piano Premium.
Dedicato (servizio app)
(livello di base o superiore)
Quando è necessario eseguire in macchine virtuali dedicate o in isolamento, usare immagini personalizzate o usare la capacità del piano di servizio app in eccesso. Usa la fatturazione del piano di servizio app regolare. Il costo è basato sul piano tariffario scelto.

È stato scelto il piano che supporta meglio i requisiti di prestazioni e costi delle funzioni. Per altre informazioni, vedere Ridimensionamento e hosting di Funzioni di Azure.

Questo articolo si occupa solo del piano di consumo, poiché questo piano comporta costi variabili. Questo articolo sostituisce l'articolo Domande frequenti sulla fatturazione dei costi del piano di consumo .

Durable Functions può essere eseguito anche in un piano di consumo. Per altre informazioni sulle considerazioni sui costi quando si usa Durable Functions, vedere Durable Functions fatturazione.

Costi del piano a consumo

Il costo di esecuzione di una singola funzione viene misurato in GB-secondi. Il costo di esecuzione viene calcolato combinando l'utilizzo della memoria con il relativo tempo di esecuzione. Una funzione che viene eseguita per più tempo costa di più, come fa una funzione che utilizza più memoria.

Si consideri un caso in cui la quantità di memoria usata dalla funzione rimane costante. In questo caso, il calcolo del costo è semplice moltiplicazione. Ad esempio, si supponga che la funzione ha usato 0,5 GB per 3 secondi. Il costo di esecuzione è 0.5GB * 3s = 1.5 GB-secondsquindi .

Poiché l'utilizzo della memoria cambia nel tempo, il calcolo è essenzialmente l'integrale dell'utilizzo della memoria nel tempo. Il sistema esegue questo calcolo campionamento dell'utilizzo della memoria del processo (insieme ai processi figlio) a intervalli regolari. Come indicato nella pagina dei prezzi, l'utilizzo della memoria viene arrotondato al bucket di 128 MB più vicino. Quando il processo usa 160 MB, viene addebitato l'addebito per 256 MB. Il calcolo tiene conto della concorrenza, ovvero più esecuzioni simultanee della funzione nello stesso processo.

Nota

Anche se l'utilizzo della CPU non è considerato direttamente nel costo di esecuzione, può avere un impatto sul costo quando influisce sul tempo di esecuzione della funzione.

Per una funzione attivata da HTTP, quando si verifica un errore prima che il codice della funzione inizi a eseguire non viene addebitato alcun addebito per un'esecuzione. Ciò significa che 401 risposte dalla piattaforma a causa della convalida della chiave API o della funzionalità di autenticazione/autorizzazione servizio app non vengono conteggiati sui costi di esecuzione. Analogamente, le risposte al codice di stato 5xx non vengono conteggiate quando si verificano nella piattaforma prima di un'elaborazione della richiesta. Una risposta 5xx generata dalla piattaforma dopo l'avvio del codice della funzione viene ancora conteggiata come esecuzione, anche se l'errore non viene generato dal codice della funzione.

Quando si stima il costo complessivo dell'esecuzione delle funzioni in qualsiasi piano, tenere presente che il runtime di Funzioni usa diversi altri servizi di Azure, che vengono fatturati separatamente. 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 di creare e pagare per tali servizi aggiuntivi.

Per le funzioni in esecuzione in un piano di consumo, il costo totale è il costo di esecuzione delle funzioni, oltre al costo della larghezza di banda e dei servizi aggiuntivi.

Quando si stimano i costi complessivi dell'app per le funzioni e dei servizi correlati, usare il calcolatore dei prezzi di Azure.

Costo correlato Descrizione
Account di archiviazione Ogni app per le funzioni richiede che sia associato un account di archiviazione di Azure per utilizzo generico, che viene fatturato separatamente. Questo account viene usato internamente dal runtime di Funzioni, ma è anche possibile usarlo per i trigger e le associazioni di archiviazione. Se non si ha un account di archiviazione, ne viene creato uno quando viene creata l'app per le funzioni. Per altre informazioni, vedere Requisiti dell'account di archiviazione.
Application Insights Le funzioni si basano su Application Insights per offrire un'esperienza di monitoraggio ad alte prestazioni per le app per le funzioni. Sebbene non sia necessario, è necessario abilitare l'integrazione di Application Insights. Una concessione gratuita dei dati di telemetria è inclusa ogni mese. Per altre informazioni, vedere la pagina dei prezzi di Monitoraggio di Azure.
Larghezza di banda di rete È possibile comportare costi per il trasferimento dei dati a seconda della direzione e dello scenario dello spostamento dei dati. Per altre informazioni, vedere Dettagli sui prezzi della larghezza di banda.

Comportamenti che influiscono sul tempo di esecuzione

I comportamenti seguenti delle funzioni possono influire sul tempo di esecuzione:

  • Trigger e associazioni: il tempo necessario per leggere l'input da e scrivere nell'associazione di funzioni viene conteggiato come tempo di esecuzione. 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 necessario per scrivere il messaggio nella coda, incluso nel calcolo del costo della funzione.

  • Esecuzione asincrona: il tempo di attesa della funzione per i risultati di una richiesta asincrona (await in C#) viene conteggiato come tempo di esecuzione. Il calcolo GB-secondo è basato sull'ora di inizio e fine della funzione e sull'utilizzo della memoria in quel periodo. Ciò che accade nel tempo in termini di attività della CPU non è fattoriato nel calcolo. È possibile ridurre i costi durante le operazioni asincrone usando Durable Functions. Non viene addebitato tempo trascorso in attesa nelle funzioni dell'agente di orchestrazione.

Nella fattura è possibile visualizzare i dati relativi ai costi di Esecuzioni totali - Funzioni e Tempo di esecuzione - Funzioni, oltre ai costi fatturati effettivi. Tuttavia, questi dati della fattura sono un'aggregazione mensile per un periodo di fattura precedente.

Metriche a livello di app per le funzioni

Per comprendere meglio l'impatto sui costi delle funzioni, è possibile usare Monitoraggio di Azure per visualizzare le metriche correlate ai costi attualmente generate dalle app per le funzioni.

Usare Esplora metriche di Monitoraggio di Azure per visualizzare i dati relativi ai costi per le app per le funzioni del piano di consumo in un formato grafico.

  1. Nella portale di Azure passare all'app per le funzioni.

  2. Nel pannello sinistro scorrere verso il basso fino a Monitoraggio e scegliere Metriche.

  3. Dalla metrica scegliere Conteggio esecuzione funzione e Somma per aggregazione. Ciò aggiunge la somma dei conteggi di esecuzione durante il periodo scelto al grafico.

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

  4. Selezionare Aggiungi metrica e ripetere i passaggi da 2 a 4 per aggiungere unità di esecuzione delle funzioni al grafico.

Il grafico risultante contiene i totali per entrambe le metriche di esecuzione nell'intervallo di tempo scelto, che in questo caso è di due ore.

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

Poiché il numero di unità di esecuzione è molto maggiore del numero di esecuzioni, il grafico mostra solo le unità di esecuzione.

Questo grafico mostra un totale di 1,11 miliardi Function Execution Units utilizzato in un periodo di due ore, misurato in mb-millisecondi. Per convertire in GB-secondi, dividere per 1024000. In questo esempio l'app per le funzioni ha usato 1110000000 / 1024000 = 1083.98 GB-secondi. È possibile prendere questo valore e moltiplicare in base al prezzo corrente del tempo di esecuzione nella pagina Prezzi funzioni, che offre il costo di queste due ore, presupponendo che siano già state usate le concessioni gratuite di tempo di esecuzione.

Metriche a livello di funzione

Le unità di esecuzione delle funzioni sono una combinazione di tempo di esecuzione e l'utilizzo della memoria, che rende difficile la metrica per comprendere l'utilizzo della memoria. I dati di memoria non sono una metrica attualmente disponibile tramite Monitoraggio di Azure. Se tuttavia si vuole ottimizzare l'utilizzo della memoria dell'app, è possibile usare i dati del contatore delle prestazioni raccolti da Application Insights.

Se non è già stato fatto, abilitare Application Insights nell'app per le funzioni. Con questa integrazione abilitata, è possibile eseguire query su questi dati di telemetria nel portale.

È possibile usare Esplora metriche di Monitoraggio di Azure nelle API REST o portale di Azure per ottenere i dati delle metriche di monitoraggio.

Determinare l'utilizzo della memoria

In Monitoraggio selezionare Log (Analisi), quindi copiare la query di telemetria seguente e incollarla nella finestra della query e selezionare Esegui. Questa query restituisce l'utilizzo totale della memoria in ogni ora campionata.

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

I risultati sono simili all'esempio seguente:

timestamp [UTC] name Valore
12/09/2019, 1:05:14.947 Private Bytes 209,932,288
12/9/2019, 1:06:14.994 Private Bytes 212,189,184
12/09/2019, 1:06:30.010 Private Bytes 231,714,816
12/09/2019, 1:07:15.040 Private Bytes 210,591,744
12/09/2019, 1:12:16.285 Private Bytes 216,285,184
12/09/2019, 1:12:31.376 Private Bytes 235,806,720

Determinare la durata

Monitoraggio di Azure tiene traccia delle metriche a livello di risorsa, che per Funzioni è l'app per le funzioni. L'integrazione di Application Insights genera metriche per ogni funzione. Ecco una query di analisi di esempio per ottenere la durata media di una funzione:

customMetrics
| where name contains "Duration"
| extend averageDuration = valueSum / valueCount
| summarize averageDurationMilliseconds=avg(averageDuration) by name
name averageDurationMilliseconds
QueueTrigger AvgDurationMs 16.087
QueueTrigger MaxDurationMs 90.249
QueueTrigger MinDurationMs 8.522

Passaggi successivi