Memperkirakan biaya berbasis konsumsi
Artikel ini menunjukkan kepada Anda cara memperkirakan biaya paket untuk paket hosting Konsumsi dan Konsumsi Flex.
Azure Functions saat ini menawarkan empat paket hosting yang berbeda untuk aplikasi fungsi Anda, dengan setiap paket memiliki model harganya sendiri:
Paket | Deskripsi |
---|---|
Consumption | Anda hanya dikenakan biaya untuk waktu menjalankan aplikasi fungsi Anda. Paket ini mencakup pemberian gratis per langganan. |
Paket Konsumsi Flex | Anda membayar waktu eksekusi pada instans tempat fungsi Anda berjalan, ditambah instans yang selalu siap . Instans ditambahkan dan dihapus secara dinamis berdasarkan jumlah peristiwa masuk. Juga mendukung integrasi jaringan virtual. |
Premium | Memberi Anda fitur dan mekanisme penskalakan yang sama dengan paket Konsumsi, tetapi dengan peningkatan performa dan integrasi jaringan virtual. Biaya didasarkan pada tingkat harga yang Anda pilih. Untuk mempelajari selengkapnya, lihat Paket Azure Functions Premium. |
Khusus (App Service) (tingkat dasar atau lebih tinggi) |
Saat Anda perlu menjalankan Komputer Virtual khusus atau dalam isolasi, gunakan gambar khusus, atau ingin menggunakan kelebihan kapasitas paket App Service Anda. Menggunakan penagihan paket App Service reguler. Biaya didasarkan pada tingkat harga yang Anda pilih. |
Anda harus selalu memilih paket yang paling mendukung fitur, performa, dan persyaratan biaya untuk eksekusi fungsi Anda. Untuk mempelajari selengkapnya, lihat Skala dan hosting Azure Functions.
Artikel ini berfokus pada paket Konsumsi dan Konsumsi Flex karena dalam penagihan paket ini tergantung pada periode aktif eksekusi di dalam setiap instans.
Durable Functions juga dapat berjalan di kedua paket ini. Untuk mempelajari selengkapnya tentang pertimbangan biaya saat menggunakan Durable Functions, lihat Penagihan Durable Functions.
Biaya berbasis konsumsi
Cara penghitungan biaya berbasis konsumsi, termasuk pemberian gratis, tergantung pada paket tertentu. Untuk informasi biaya dan pemberian terbaru, lihat halaman harga Azure Functions.
Biaya eksekusi dari satu fungsi eksekusi diukur dalam GB-detik. Biaya eksekusi dihitung dengan menggabungkan penggunaan memorinya dengan waktu eksekusinya. Fungsi yang berjalan lebih lama membutuhkan biaya lebih tinggi, seperti halnya fungsi yang menghabiskan lebih banyak memori.
Pertimbangkan kasus jika jumlah memori yang digunakan oleh fungsi tetap konstan. Dalam hal ini, menghitung biaya adalah perkalian sederhana. Misalnya, anggap fungsi Anda digunakan 0,5 GB selama 3 detik. Maka biaya eksekusinya adalah 0.5GB * 3s = 1.5 GB-seconds
.
Karena penggunaan memori berubah dari waktu ke waktu, perhitungan pada dasarnya merupakan bagian integral dari penggunaan memori dari waktu ke waktu. Sistem melakukan perhitungan ini dengan mengambil sampel penggunaan memori proses (bersama dengan proses turunan) secara berkala. Seperti disebutkan pada halaman harga, penggunaan memori dibulatkan ke wadah 128-MB terdekat. Saat proses Anda menggunakan 160 MB, Anda dikenakan biaya untuk 256 MB. Perhitungan memperhitungkan konkurensi, yaitu beberapa eksekusi fungsi bersamaan dalam proses yang sama.
Catatan
Meskipun penggunaan CPU tidak secara langsung dipertimbangkan dalam biaya eksekusi, hal itu dapat berdampak pada biaya saat memengaruhi waktu eksekusi fungsi.
Untuk fungsi yang dipicu HTTP, saat kesalahan terjadi sebelum kode fungsi Anda mulai mengeksekusi, Anda tidak ditagih untuk eksekusi. Ini berarti bahwa 401 respons dari platform karena validasi kunci API atau fitur Autentikasi/Otorisasi App Service tidak dihitung terhadap biaya eksekusi Anda. Demikian pula, respons kode status 5xx tidak dihitung ketika terjadi di platform sebelum fungsi Anda memproses permintaan. Respons 5xx yang dihasilkan oleh platform setelah kode fungsi Anda mulai dijalankan masih dihitung sebagai eksekusi, bahkan ketika kesalahan tidak dimunculkan dari kode fungsi Anda.
Biaya terkait lainnya
Saat memperkirakan biaya keseluruhan menjalankan fungsi Anda dalam paket apa pun, ingatlah bahwa runtime Functions menggunakan beberapa layanan Azure lainnya, yang masing-masing ditagih secara terpisah. Saat Anda memperkirakan harga untuk aplikasi fungsi, pemicu dan pengikatan apa pun yang Anda miliki yang terintegrasi dengan layanan Azure lainnya mengharuskan Anda membuat dan membayar layanan lain tersebut.
Untuk fungsi yang berjalan dalam paket Konsumsi, total biaya adalah biaya eksekusi fungsi Anda, ditambah biaya bandwidth dan layanan lainnya.
Saat memperkirakan biaya keseluruhan aplikasi fungsi dan layanan terkait Anda, gunakan kalkulator harga Azure.
Biaya terkait | Deskripsi |
---|---|
Akun penyimpanan | Setiap aplikasi fungsi mengharuskan Anda memiliki akun Tujuan Umum Azure Storage terkait, yang ditagih secara terpisah. Akun ini digunakan secara internal oleh runtime Functions, tetapi Anda juga dapat menggunakannya untuk pemicu dan pengikatan Storage. Jika Anda tidak memiliki akun penyimpanan, akun penyimpanan dibuat untuk Anda saat aplikasi fungsi dibuat. Untuk mempelajari selengkapnya, lihat Persyaratan akun Storage. |
Application Insights | Fungsi bergantung pada Application Insights untuk memberikan pengalaman pemantauan berkinerja tinggi untuk aplikasi fungsi Anda. Meskipun tidak diperlukan, Anda harus mengaktifkan integrasi Application Insights. Pemberian gratis data telemetri disertakan setiap bulan. Untuk mempelajari selengkapnya, lihat halaman harga Azure Monitor. |
Bandwidth jaringan | Anda dapat dikenakan biaya untuk transfer data tergantung pada arah dan skenario pergerakan data. Untuk mempelajari selengkapnya, lihat Detail harga Bandwidth. |
Perilaku yang memengaruhi waktu eksekusi
Perilaku fungsi Anda berikut dapat memengaruhi waktu eksekusi:
Pemicu dan pengikatan: Waktu yang dibutuhkan untuk membaca input dari dan menulis output ke pengikatan fungsi Anda dihitung sebagai waktu eksekusi. Misalnya, saat fungsi Anda menggunakan pengikatan output untuk menulis pesan ke antrean penyimpanan Azure, waktu eksekusi Anda mencakup waktu yang diperlukan untuk menulis pesan ke antrean, yang disertakan dalam perhitungan biaya fungsi.
Eksekusi asinkron: Waktu fungsi Anda menunggu hasil permintaan asinkron (
await
di C#) dihitung sebagai waktu eksekusi. Perhitungan GB-detik didasarkan pada waktu mulai dan akhir fungsi dan penggunaan memori selama periode tersebut. Apa yang terjadi selama waktu itu dalam hal aktivitas CPU tidak diperhitungkan dalam kalkulasi. Anda mungkin dapat mengurangi biaya selama operasi asinkron dengan menggunakan Durable Functions. Anda tidak akan dikenai biaya atas waktu yang dihabiskan untuk menunggu di fungsi orkestrator.
Menampilkan data terkait biaya
Dalam faktur Anda, Anda dapat melihat data terkait biaya Total Eksekusi - Functions dan Waktu Eksekusi - Functions, bersama dengan biaya yang ditagih sebenarnya. Namun, data faktur ini adalah agregat bulanan untuk periode faktur sebelumnya.
Metrik tingkat aplikasi fungsi
Untuk lebih memahami dampak biaya fungsi Anda, Anda dapat menggunakan Azure Monitor untuk melihat metrik terkait biaya yang saat ini sedang dibuat oleh aplikasi fungsi Anda.
Gunakan penjelajah metrik Azure Monitor untuk melihat data terkait biaya untuk aplikasi fungsi paket Consumption Anda dalam format grafis.
Di portal Microsoft Azure, navigasikan ke aplikasi fungsi Anda.
Di panel kiri, gulir ke bawah ke Pemantauan dan pilih Metrik.
Dari Metrik, pilih Jumlah Eksekusi Fungsi dan Jumlah untuk Agregasi. Ini menambahkan jumlah hitungan eksekusi selama periode yang dipilih ke bagan.
Pilih Tambahkan metrik dan ulangi langkah 2-4 untuk menambahkan Unit Eksekusi Fungsi ke bagan.
Bagan yang dihasilkan berisi total untuk kedua metrik eksekusi dalam rentang waktu yang dipilih, yang dalam hal ini adalah dua jam.
Karena jumlah unit eksekusi jauh lebih besar dari jumlah eksekusi, bagan hanya menunjukkan unit eksekusi.
Bagan ini menunjukkan total 1,11 miliar Function Execution Units
yang dikonsumsi dalam periode dua jam, diukur dalam MB-milidetik. Untuk mengonversi ke GB-detik, bagi dengan 1024000. Dalam contoh ini, aplikasi fungsi mengonsumsi 1110000000 / 1024000 = 1083.98
GB-detik. Anda dapat mengambil nilai ini dan mengalikannya dengan harga waktu eksekusi saat ini di halaman harga fungsi, yang memberi Anda biaya dua jam ini, dengan asumsi Anda telah menggunakan pemberian waktu eksekusi gratis.
Metrik tingkat fungsi
Unit eksekusi fungsi adalah kombinasi waktu eksekusi dan penggunaan memori Anda, yang menjadikannya metrik yang sulit untuk memahami penggunaan memori. Data memori bukan metrik yang saat ini tersedia melalui Azure Monitor. Namun, jika Anda ingin mengoptimalkan penggunaan memori aplikasi Anda, dapat menggunakan data penghitung performa yang dikumpulkan oleh Application Insights.
Jika Anda belum melakukannya, aktifkan Application Insights di aplikasi fungsi Anda. Dengan integrasi ini diaktifkan, Anda dapat meminta data telemetri ini di portal.
Anda dapat menggunakan penjelajah metrik Azure Monitor di portal Microsoft Azure atau REST API untuk mendapatkan data Metrik Monitor.
Menentukan penggunaan memori
Di bawah Pemantauan, pilih Log (Analitik), lalu salin kueri telemetri berikut dan tempelkan ke jendela kueri dan pilih Jalankan. Kueri ini mengembalikan total penggunaan memori pada setiap waktu yang menjadi sampel.
performanceCounters
| where name == "Private Bytes"
| project timestamp, name, value
Hasilnya terlihat seperti contoh berikut:
stempel waktu [UTC] | nama | value |
---|---|---|
12/9/2019, 1.05.14,947 | Byte Privat | 209.932.288 |
12/9/2019, 1.06.14,994 | Byte Privat | 212.189.184 |
12/9/2019, 1.06.30,010 | Byte Privat | 231.714.816 |
12/9/2019, 1.07.15,040 | Byte Privat | 210.591.744 |
12/9/2019, 1.12.16,285 | Byte Privat | 216.285.184 |
12/9/2019, 1.12.31,376 | Byte Privat | 235.806.720 |
Menentukan durasi
Azure Monitor melacak metrik di tingkat sumber daya, untuk Fungsi adalah aplikasi fungsi. Integrasi Application Insights memperlihatkan metrik berdasarkan per fungsi. Berikut ini contoh kueri analitik untuk mendapatkan durasi rata-rata fungsi:
customMetrics
| where name contains "Duration"
| extend averageDuration = valueSum / valueCount
| summarize averageDurationMilliseconds=avg(averageDuration) by name
nama | averageDurationMilliseconds |
---|---|
QueueTrigger AvgDurationMs | 16,087 |
QueueTrigger MaxDurationMs | 90,249 |
QueueTrigger MinDurationMs | 8,522 |