Penskalaan berbasis peristiwa di Azure Functions

Dalam paket Konsumsi dan Premium, Azure Functions menskalakan sumber daya CPU dan memori dengan menambahkan lebih banyak instans host Functions. Jumlah instans ditentukan pada jumlah peristiwa yang memicu fungsi.

Setiap instans host Functions dalam paket Konsumsi dibatasi, biasanya memori 1,5 GB dan satu CPU. Instans host adalah seluruh aplikasi fungsi, yang berarti semua fungsi dalam aplikasi fungsi berbagi sumber daya dalam instans dan skala pada saat yang sama. Aplikasi fungsi yang memiliki skala paket Konsumsi yang sama secara independen. Dalam paket Premium, ukuran paket menentukan memori dan CPU yang tersedia untuk semua aplikasi dalam paket tersebut dan pada instans tersebut.

File kode fungsi disimpan di berbagi Azure Files di akun penyimpanan utama fungsi. Saat Anda menghapus akun penyimpanan utama aplikasi fungsi, file kode fungsi dihapus dan tidak dapat dipulihkan.

Penskalaan runtime

Azure Functions menggunakan komponen yang disebut pengontrol skala untuk memantau laju peristiwa dan menentukan apakah akan memperbesar atau memperkecil. Pengontrol skala menggunakan heuristik untuk setiap jenis pemicu. Misalnya, saat Anda menggunakan pemicu penyimpanan Azure Queue, pemicu tersebut menggunakan penskalaan berbasis target.

Satuan skala untuk Azure Functions adalah aplikasi fungsi. Saat aplikasi fungsi diskalakan, lebih banyak sumber daya dialokasikan untuk menjalankan beberapa instans host Azure Functions. Sebaliknya, karena permintaan komputasi berkurang, pengontrol skala menghapus instans host fungsi. Jumlah instans akhirnya "diskalakan" ketika tidak ada fungsi yang berjalan dalam aplikasi fungsi.

Scale controller monitoring events and creating instances

Cold Start

Setelah aplikasi fungsi Anda diam selama beberapa menit, platform dapat menskalakan jumlah instans saat aplikasi Anda berjalan ke nol. Permintaan berikutnya memiliki latensi penskalaan tambahan dari nol ke satu. Latensi ini disebut sebagai cold start. Jumlah dependensi yang diperlukan oleh aplikasi fungsi Anda dapat memengaruhi waktu mulai dingin. Cold start merupakan masalah untuk operasi sinkron, seperti pemicu HTTP yang harus mengembalikan respons. Jika cold start memengaruhi fungsi Anda, pertimbangkan untuk berjalan dalam paket Premium atau dalam paket Khusus dengan pengaturan Always on diaktifkan.

Memahami perilaku penskalaan

Penskalakan dapat bervariasi berdasarkan beberapa faktor, dan aplikasi menskalakan secara berbeda berdasarkan pemicu dan bahasa yang dipilih. Ada beberapa seluk-beluk perilaku penskalaan yang harus diperhatikan:

  • Instans maksimum: Satu aplikasi fungsi hanya menskalakan hingga maksimum yang diizinkan oleh paket. Satu instans dapat memproses lebih dari satu pesan atau permintaan pada satu waktu, sehingga tidak ada batas yang ditetapkan pada jumlah eksekusi bersamaan. Anda dapat menentukan maksimum yang lebih rendah ke skala pembatasan sesuai dengan yang diperlukan.
  • Tingkat instans baru: Untuk pemicu HTTP, instans baru dialokasikan, paling banyak, sekali per detik. Untuk pemicu non-HTTP, instans baru dialokasikan paling banyak setiap 30 detik sekali. Penskalaan lebih cepat saat berjalan dalam paket Premium.
  • Penskalaan berbasis target: Penskalaan berbasis target menyediakan model penskalaan yang cepat dan intuitif untuk pelanggan dan saat ini didukung untuk Antrean dan Topik Bus Layanan, Antrean Penyimpanan, Azure Event Hubs, dan ekstensi Cosmos DB. Pastikan untuk meninjau penskalakan berbasis target untuk memahami perilaku penskalakannya.

Batasi peluasan skala

Anda mungkin ingin membatasi jumlah maksimum instans yang digunakan aplikasi untuk diskalakan. Ini paling umum untuk kasus di mana komponen downstream seperti database memiliki throughput yang terbatas. Secara default, fungsi rencana konsumsi melakukan peluasan skala hingga sebanyak 200 instans, dan fungsi paket Premium akan melakukan peluasan skala hingga sebanyak 100 instans. Anda dapat menentukan maksimum yang lebih rendah untuk aplikasi tertentu dengan memodifikasi functionAppScaleLimit nilainya. functionAppScaleLimit Dapat diatur ke 0 atau null untuk tidak dibatasi, atau nilai yang valid antara dan 1 aplikasi maksimum.

az resource update --resource-type Microsoft.Web/sites -g <RESOURCE_GROUP> -n <FUNCTION_APP-NAME>/config/web --set properties.functionAppScaleLimit=<SCALE_LIMIT>

Perilaku penskalaan

Penskalaan berbasis peristiwa secara otomatis mengurangi kapasitas saat permintaan untuk fungsi Anda berkurang. Ini dilakukan dengan menguras instans eksekusi fungsi mereka saat ini dan kemudian menghapus instans tersebut. Perilaku ini dicatat sebagai mode pengosongan. Masa tenggang untuk fungsi yang saat ini dijalankan dapat diperpanjang hingga 10 menit untuk aplikasi paket Konsumsi dan hingga 60 menit untuk aplikasi paket Premium. Penskalaan berbasis peristiwa dan perilaku ini tidak berlaku untuk aplikasi Paket khusus.

Pertimbangan berikut berlaku untuk perilaku penskalaan:

  • Untuk aplikasi fungsi paket Konsumsi yang berjalan di Windows, hanya aplikasi yang dibuat setelah Mei 2021 yang mengaktifkan perilaku mode pengosongan secara default.
  • Untuk mengaktifkan fitur matikan dengan baik untuk fungsi menggunakan pemicu Azure Service Bus, gunakan versi 4.2.0 atau versi Ekstensi Azure Service Bus yang lebih baru.

Praktik dan pola terbaik untuk aplikasi yang dapat diskalakan

Ada banyak aspek dari aplikasi fungsi yang memengaruhi aplikasi menskalakan, termasuk konfigurasi host, jejak waktu proses, dan efisiensi sumber daya. Untuk informasi selengkapnya, lihat bagian skalabilitas dari artikel pertimbangan performa. Anda juga harus menyadari bagaimana koneksi berperilaku sebagai skala aplikasi fungsi Anda. Untuk informasi selengkapnya, lihat Cara mengelola koneksi di Azure Functions.

Untuk informasi selengkapnya tentang penskalaan di Python dan Node.js, lihat panduan pengembang Azure Functions Python - Penskalaan dan konkurensi dan panduan pengembang Azure Functions Node.js - Penskalaan dan konkurensi.

Model tagihan

Tagihan untuk paket yang berbeda dijelaskan secara rinci di halaman harga Azure Functions. Penggunaan diagregasi pada tingkat aplikasi fungsi dan hanya menghitung waktu kode fungsi dijalankan. Berikut ini adalah unit untuk penagihan:

  • Konsumsi sumber daya dalam gigabyte-detik (GB-s). Dihitung sebagai kombinasi ukuran memori dan waktu eksekusi untuk semua fungsi dalam aplikasi fungsi.
  • Eksekusi. Dihitung setiap kali fungsi dijalankan sebagai respons terhadap pemicu peristiwa.

Kueri dan informasi yang berguna tentang cara memahami tagihan konsumsi Anda dapat ditemukan di TANYA JAWAB UMUM penagihan.

Langkah berikutnya

Untuk mempelajari selengkapnya, lihat artikel berikut ini: