Stima dei costi basati sul consumo
Questo articolo illustra come stimare i costi del piano per i piani di hosting a consumo e flex.
Funzioni di Azure offre attualmente quattro piani di hosting diversi per le app per le funzioni, con ogni piano con un proprio modello tariffario:
Piano | Descrizione |
---|---|
Consumo | Viene addebitato solo il tempo di esecuzione dell'app per le funzioni. Questo piano include una concessione gratuita per ogni sottoscrizione. |
Piano a consumo flex | Si paga il tempo di esecuzione per le istanze in cui vengono eseguite le funzioni, oltre a tutte le istanze sempre pronte. Le istanze vengono aggiunte e rimosse dinamicamente in base al numero di eventi in ingresso. Supporta anche l'integrazione della rete virtuale. |
Premium | Offre le stesse funzionalità e gli stessi meccanismi di ridimensionamento del piano a consumo, ma con prestazioni migliorate e integrazione della rete virtuale. Il costo è basato sul piano tariffario scelto. Per altre informazioni, vedere Piano Premium di Funzioni di Azure. |
Dedicato (servizio app) (livello basic 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 normale del piano di servizio app. Il costo è basato sul piano tariffario scelto. |
Importante
Il piano a consumo Flexn è attualmente in anteprima.
È consigliabile scegliere sempre il piano che supporti al meglio le funzionalità, le prestazioni e i requisiti di costo per le esecuzioni delle funzioni. Per altre informazioni, vedere Ridimensionamento e hosting di Funzioni di Azure.
Questo articolo è incentrato sui piani a consumo e flex perché in questi piani la fatturazione dipende dai periodi attivi di esecuzioni all'interno di ogni istanza.
Durable Functions può essere eseguito anche in entrambi questi piani. Per altre informazioni sulle considerazioni sui costi quando si usa Durable Functions, vedere Fatturazione di Durable Functions.
Costi basati sul consumo
Il modo in cui vengono calcolati i costi basati sul consumo, incluse le concessioni gratuite, dipende dal piano specifico. Per informazioni sui costi e sulle concessioni più aggiornati, vedere la pagina dei prezzi di Funzioni di Azure.
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 tempo di esecuzione. Funzione che viene eseguita per costi più lunghi, così come 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. Si supponga, ad esempio, che la funzione ha utilizzato 0,5 GB per 3 secondi. Il costo di esecuzione è quindi 0.5GB * 3s = 1.5 GB-seconds
.
Poiché l'utilizzo della memoria cambia nel tempo, il calcolo è essenzialmente l'integrale dell'utilizzo della memoria nel tempo. Il sistema esegue questo calcolo eseguendo il 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, vengono addebitati 256 MB. Il calcolo prende in considerazione la concorrenza, ovvero più esecuzioni di funzioni simultanee nello stesso processo.
Nota
Anche se l'utilizzo della CPU non viene 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 essere eseguito 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à autenticazione/autorizzazione del servizio app non vengono conteggiati rispetto al costo di esecuzione. Analogamente, le risposte al codice di stato 5xx non vengono conteggiate quando si verificano nella piattaforma prima che la funzione elabori la richiesta. Una risposta 5xx generata dalla piattaforma dopo che il codice della funzione è stato avviato per l'esecuzione viene ancora conteggiata come esecuzione, anche quando l'errore non viene generato dal codice della funzione.
Altri costi correlati
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, ognuno dei quali viene fatturato separatamente. Quando si stimano i prezzi per le app per le funzioni, tutti i trigger e le associazioni disponibili che si integrano con altri servizi di Azure richiedono la creazione e il pagamento per tali altri servizi.
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 ad altri servizi.
Quando si stimano i costi complessivi dell'app per le funzioni e dei servizi correlati, usare il calcolatore prezzi di Azure.
Costo correlato | Descrizione |
---|---|
Account di archiviazione | Per ogni app per le funzioni è necessario disporre di un account di archiviazione di Azure per utilizzo generico associato, 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 | Funzioni si basa su Application Insights per offrire un'esperienza di monitoraggio ad alte prestazioni per le app per le funzioni. Anche se non è obbligatorio, è necessario abilitare l'integrazione di Application Insights. Ogni mese è inclusa una concessione gratuita di dati di telemetria. Per altre informazioni, vedere la pagina dei prezzi di Monitoraggio di Azure. |
Larghezza di banda della rete | È possibile sostenere 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 impiegato per leggere l'input e scrivere l'output nelle associazioni di funzione 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 include il tempo impiegato 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 del secondo GB si basa sull'ora di inizio e di fine della funzione e sull'utilizzo della memoria in tale periodo. Ciò che accade nel tempo in termini di attività della CPU non viene inserito nel calcolo. È possibile ridurre i costi durante le operazioni asincrone usando Durable Functions. Non viene addebitato alcun tempo dedicato alle attese nelle funzioni dell'agente di orchestrazione.
Visualizzazione dei dati correlati ai costi
Nella fattura è possibile visualizzare i dati relativi ai costi delle Esecuzioni totali - Funzioni e Tempo di esecuzione - Funzioni, insieme ai costi effettivi fatturati. Tuttavia, questi dati della fattura sono un'aggregazione mensile per un periodo di fatturazione 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 relative ai costi attualmente generate dalle app per le funzioni.
Usare Esplora metriche di Monitoraggio di Azure per visualizzare i dati correlati ai costi per le app per le funzioni del piano a consumo in un formato grafico.
Nel portale di Azure passare all'app per le funzioni.
Nel pannello sinistro scorrere verso il basso fino a Monitoraggio e scegliere Metriche.
In Metrica scegliere Conteggio delle esecuzioni della funzione e Somma per aggregazione. In questo modo viene aggiunta la somma dei conteggi di esecuzione durante il periodo scelto al grafico.
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.
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 eseguire la conversione in GB-secondi, dividere per 1024000. In questo esempio l'app per le funzioni ha utilizzato 1110000000 / 1024000 = 1083.98
GB-secondi. È possibile accettare questo valore e moltiplicarsi per il prezzo corrente del tempo di esecuzione nella pagina dei prezzi di Funzioni, che offre il costo di queste due ore, presupponendo che siano già state usate 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 attualmente disponibili tramite Monitoraggio di Azure. Tuttavia, se 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.
Si possono usare Esplora metriche di Monitoraggio di Azure nel portale di Azure o nelle API REST 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 di query e selezionare Esegui. Questa query restituisce l'utilizzo totale della memoria in ogni momento campionato.
performanceCounters
| where name == "Private Bytes"
| project timestamp, name, value
I risultati sono simili all'esempio seguente:
timestamp [UTC] | name | value |
---|---|---|
12/09/2019, 1:05:14.947 | Byte privati | 209,932,288 |
12/09/2019, 1:06:14.994 | Byte privati | 212,189,184 |
12/09/2019, 1:06:30.010 | Byte privati | 231,714,816 |
12/09/2019, 1:07:15.040 | Byte privati | 210,591,744 |
12/09/2019, 1:12:16.285 | Byte privati | 216,285,184 |
12/09/2019, 1:12:31.376 | Byte privati | 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 |