Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure İşlevleri, gelen olay sayısına göre örnekler ekleyerek fonksiyon uygulamanızı otomatik olarak ölçeklendirir. Uygulamanızın ölçeklenme oranı, maksimum örnekler ve fonksiyonların bağımsız ölçeklenme gibi nasıl ölçeklendiği, hosting planınıza bağlıdır:
| Barındırma planı | Olay temelli ölçeklendirme | Details |
|---|---|---|
| Esnek Tüketim planı | ✓ Fonksiyon başına ölçeklendirme | Yukarıdaki Flex Tüketim planını seçin |
| Premium plan | ✓ Uygulama düzeyinde ölçeklendirme | Yukarıdaki Premium planı seçin |
| Tüketim planı (eski) | ✓ Uygulama düzeyinde ölçeklendirme | Yukarıdaki Tüketim planını seçin |
| Özel (App Service) planı | Uygulanamaz | App Service ölçeklendirmesini kullanır |
| Kapsayıcı Uygulamaları | Uygulanamaz | Container Apps ölçeklendirmesini kullanır |
Note
Bu makaledeki içerik, şu anda seçilen barındırma planıyla ilgili değildir. Farklı bir plan seçmek için makalenin başındaki seçici cihazını kullanın. Tüm barındırma planlarının karşılaştırması için Azure İşlevleri barındırma seçeneklerine bakınız.
Olay odaklı ölçeklendirme, Dedicated (App Service) planı için geçerli değildir. Dedicated planı etkinliklere göre dinamik olarak ölçeklenmez. Dedicated plan'daki ölçeklendirme seçenekleri için Scale up an app in Azure App Service'e bakınız.
Note
Bu makaledeki içerik, şu anda seçilen barındırma planıyla ilgili değildir. Farklı bir plan seçmek için makalenin başındaki seçici cihazını kullanın. Tüm barındırma planlarının karşılaştırması için Azure İşlevleri barındırma seçeneklerine bakınız.
Olay odaklı ölçeklendirme, Azure Container Apps'te fonksiyonlar çalıştırıldığında uygulanmaz. Container Apps'te barındırıldığında, ölçeklendirme Container Apps ortamı tarafından yönetilir. Daha fazla bilgi için bkz. Azure Container Apps'de ölçeklendirme kurallarını ayarlama.
Çalışma zamanı ölçeklendirme
Azure İşlevleri, olayların hızını izlemek ve ölçeğin genişletilip daraltılmayacağını belirlemek için ölçek denetleyicisi adlı bir bileşen kullanır. Ölçek kontrolörü, her tetikleyici türü için buluşsal yöntemler kullanır. Örneğin, Azure Kuyruk depolama tetikleyicisi kullanırken hedef tabanlı ölçeklendirme kullanılır.
Azure İşlevleri için ölçek birimi, işlev uygulamasıdır. Fonksiyon uygulaması ölçeklendiğinde, Azure İşlevleri ana bilgisayarının birden fazla örneğini çalıştırmak için daha fazla kaynak ayırır. Buna karşılık, hesaplama talebi azaldıkça, ölçek denetleyicisi fonksiyon host örneklerini kaldırır. İşlev uygulamasında hiçbir işlev çalıştırıldığında örnek sayısı sonunda "ölçeklendirilir".
Tüketim planındaki Fonksiyonlar ana bilgisayarının her örneği genellikle 1,5 GB bellek ve bir CPU ile sınırlıdır. Bir sunucu örneği, tüm fonksiyon uygulamasını destekler, böylece uygulamadaki tüm fonksiyonlar aynı anda kaynakları paylaşır ve ölçeklenir. Fonksiyon uygulamaları aynı Tüketim planını paylaştığında da, bağımsız olarak ölçeklenirler.
Premium planın özel boyutu, o plandaki tüm uygulamalar için mevcut bellek ve CPU'yu belirler. Plan, plandaki uygulamaların ölçeklendirme gereksinimlerine göre örneklerinin ölçeğini genişletiyor ve uygulamalar da plan dahilinde gerektiği gibi ölçeklendiriliyor.
Diğer dinamik planların aksine, Flex Tüketim planı deterministik fonksiyon başına ölçeklendirme modeli kullanır. Bu modelde, her fonksiyon etkinlik sayısına ve eşzamanlılık ayarlarına göre bağımsız olarak ölçeklenir; HTTP, Blob ve orkestrasyon (Dayanıklı) tetiklenen fonksiyonlar kendi gruplarında ölçeklenir. Daha fazla bilgi için bkz . İşlev başına ölçeklendirme.
Platform, örnekleri ekleme hızını (ölçek eğrisi) maksimum örnek sayısından ayrı olarak yönetir. Ölçek eğrisinin nasıl çalıştığı, throttling davranışı ve yüksek oranlı ölçeklendirme için en iyi uygulamalar hakkında daha fazla bilgi için Ölçeklendirme oranı sayfasına bakınız.
Soğuk başlangıç
Fonksiyon uygulamanız birkaç dakika boşta kalırsa, platform uygulamanızı çalıştıran örnekler sayısını sıfıra indirebilir. Bir sonraki istek, sıfırdan bire ölçeklendirmenin ek gecikmesini yaşıyor. Bu gecikme süresi, soğuk başlangıç olarak adlandırılır. Fonksiyon uygulamanızın ihtiyaç duyduğu bağımlılık sayısı soğuk başlatma süresini etkileyebilir. Soğuk başlatma, yanıt döndürmesi gereken HTTP tetikleyicileri gibi zaman uyumlu işlemler için daha fazla sorun oluşturur. Soğuk başlangıçlar fonksiyonlarınızı etkiliyorsa, azaltma stratejilerini destekleyen bir plan kullanmayı düşünün:
| Plan | Soğuk başlangıç etkilerini hafifletme | Details |
|---|---|---|
| Esnek Tüketim planı | Her zaman hazır örnekler | Fonksiyon grubuna göre yapılandırılabilir |
| Premium plan | Önceden ısıtılmış ve her zaman hazır örnekler | Her zaman en az bir örnek çalışır |
| Tüketim planı (eski) | Hiçbiri | Bu planda soğuk başlangıçlar bekleniyor |
| Özel plan | Her zaman ayarda | Uygulama sürekli çalışıyor; Dinamik ölçeklendirme yok |
Bu tabloda görebileceğiniz gibi, hem Flex Consumption hem de Premium planlar uygulamalarınızda soğuk başlatmaları ortadan kaldırmanın yollarını sunar.
Ölçeklendirme davranışlarını anlama
Ölçeklendirme, çeşitli faktörlere bağlı olarak farklılık gösterebilir. Uygulamalar, tetikleyiciler ve seçilen dile göre farklı ölçeklenir. Ölçeklendirme davranışlarının bu karmaşıklıklarının farkında olun:
- Maksimum örnekler: Tek fonksiyonlu bir uygulama, planın izin verdiği maksimuma ölçeklenir. Ancak, tek bir örnek aynı anda birden fazla iletiyi veya isteği işleyebilir. Ölçeği gerektiği şekilde kısıtlamak için daha düşük bir maksimum değer belirtebilirsiniz.
- Yeni örnek oranı: HTTP tetikleyicileri için platform, en fazla saniyede bir yeni örnekler tahsis eder. HTTP dışı tetikleyiciler için platform, en fazla her 30 saniyede bir yeni örnekler tahsis ediyor. Bir Premium planda çalışırken ölçeklendirme daha hızlıdır.
- Hedef tabanlı ölçeklendirme: Hedef tabanlı ölçeklendirme, müşteriler için hızlı ve sezgisel bir ölçeklendirme modeli sağlar. Şu anda bu ölçeklendirme yöntemi Service Bus kuyrukları ve konuları, Depolama kuyrukları, Event Hubs, Apache Kafka ve Azure Cosmos DB uzantıları için desteklenmektedir. Ölçeklendirme davranışlarını anlamak için hedef tabanlı ölçeklendirmeyi gözden geçirmeyi unutmayın.
- İşlev başına ölçeklendirme: Bazı önemli özel durumlarla, Flex Tüketim planında çalışan işlevler bağımsız örneklere göre ölçeklendirilir. Özel durumlar HTTP tetikleyicilerini ve Blob depolama (Event Grid) tetikleyicilerini içerir. Bu tetikleyici türlerinin her biri aynı örneklerde bir grup olarak birlikte ölçeklendirilir. Benzer şekilde, tüm Dayanıklı İşlevlerin tetikleyicileri de örnekleri paylaşır ve birlikte ölçeklendirir. Daha fazla bilgi için bkz . işlev başına ölçeklendirme.
- Maksimum izlenen tetikleyiciler: Şu anda, ölçek kontrolörü ölçeklendirme kararları vermek için yalnızca 100 tetikleyiciye kadar izleyebiliyor. Uygulamanızda 100'den fazla olay tabanlı tetikleyici varsa, ölçek kararları sadece ilk 100 tetikleyiciye dayanır. Daha fazla bilgi için bkz. Ölçeklenebilir uygulamalar için en iyi yöntemler ve stratejiler.
Ölçek genişletmeyi sınırla
Bir uygulamanın ölçeği genişletmek için kullanabileceği en fazla örnek sayısını kısıtlamaya karar vekleyebilirsiniz. Bu sınırlama, veritabanı gibi bir aşağı akış bileşeninin aktarım hızının sınırlı olduğu durumlarda en yaygın olanıdır. Çeşitli barındırma planlarını çalıştırırken en yüksek ölçek sınırları için bkz . Ölçek sınırları.
Varsayılan olarak, Flex Tüketim planında çalışan uygulamaların genel örnek sınırı 100'dir. Şu anda en düşük maksimum örnek sayısı 1, ve desteklenen en yüksek maksimum örnek sayısı 1000. Flex Consumption planında bir işlev uygulaması oluşturmak için
Maksimum örnek sayısı, uygulamanın birleşik örnekleri yerine her fonksiyon ölçek grubundaki (fonksiyon grubu) talep üzerine örneklere uygulanır. Her zaman hazır olan örnekler maksimum örnek sayısıyla sınırlı değildir ve buna dahil edilmez.
Esnek Tüketim uygulamalarının maksimum örnek sayısını 1000'e kadar değiştirebilirsiniz ancak bu sayıya ulaşmadan önce uygulamalarınız için kota sınırına ulaşılır. Daha fazla ayrıntı için Bölgesel abonelik bellek kotalarını gözden geçirin.
Bu örnek, örnek sayısı 200üst sınırı olan bir uygulama oluşturur:
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_ACCOUNT_NAME> --runtime <LANGUAGE_RUNTIME> --runtime-version <RUNTIME_VERSION> --flexconsumption-location <REGION> --maximum-instance-count 200
Bu örnek, mevcut bir uygulamanın en fazla örnek sayısını az functionapp scale config set olarak değiştirmek için 150 komutunu kullanır.
az functionapp scale config set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --maximum-instance-count 150
Tüketim veya Elastik Premium planında, site yapılandırma ayarının değerini functionAppScaleLimit değiştirerek uygulamanız için daha düşük bir üst sınır belirtebilirsiniz.
functionAppScaleLimit'ün ayarı, kısıtlanmamış olarak 0 veya null veya 1 ile uygulamanın maksimum değeri arasında geçerli bir değer olacak şekilde yapılabilir.
az resource update --resource-type Microsoft.Web/sites -g <RESOURCE_GROUP> -n <FUNCTION_APP-NAME>/config/web --set properties.functionAppScaleLimit=<SCALE_LIMIT>
Ölçeklendirme oranı
Flex Tüketim planında, platform ayrıca örnekleri ekleme hızını (ölçek eğrisi) maksimum örnek sayısından ayrı olarak yönetir. Ölçek eğrisinin nasıl çalıştığı, throttling davranışı ve yüksek oranlı ölçeklendirme için en iyi uygulamalar için bkz. Ölçeklendirme oranı.
Ölçeklendirme oranı
Tüketim ve Premium planlarında, ölçek kontrolörü yeni örneklerin eklenme hızını yönetir. HTTP tetikleyiciler için yeni örnekler en fazla saniyede bir ayrılır. HTTP dışı tetikleyiciler için yeni örnekler en fazla her 30 saniyede bir tahsis edilir. Bir Premium planda çalışırken ölçeklendirme daha hızlıdır.
Ölçek daraltma davranışları
İşlevlerinize olan talep azaldığında olay odaklı ölçeklendirme otomatik olarak kapasiteyi azaltır. Mevcut işlev yürütmelerinin örneklerini boşuna çıkararak bu azaltmayı gerçekleştirir ve ardından bu örnekleri sonlandırır. Bu davranış "drain mode" olarak günlüğe kaydedilir. Şu anda yürütülmekte olan işlevler için yetkisiz kullanım süresi, Tüketim planı uygulamaları için 10 dakikaya, Flex Consumption ve Premium plan uygulamaları için ise 60 dakikaya kadar uzatılabilir. Olay temelli ölçeklendirme ve bu davranış Ayrılmış plan uygulamaları için geçerli değildir.
Ölçeklendirme davranışları için aşağıdaki noktalar geçerlidir:
- Tüketim planında Windows üzerinde çalışan uygulamalar için yalnızca Mayıs 2021'dan sonra oluşturulan uygulamalarda varsayılan olarak boşaltma modu davranışları etkindir.
- Service Bus tetikleyicisini kullanarak işlevlerde düzgün kapatmayı etkinleştirmek için Service Bus Uzantısı'nın 4.2.0 veya sonraki bir sürümünü kullanın.
İşlev başına ölçeklendirme
Esnek Tüketim planı, işlev başına ölçeklendirme davranışı uyguladığı için benzersizdir. HTTP tetikleyicileri, Blob (Event Grid) tetikleyicileri ve Dayanıklı İşlevler dışında işlev başına ölçeklendirmede uygulamanızdaki diğer tüm işlev tetikleyici türleri bağımsız örneklere göre ölçeklendirilir. Uygulamanızdaki HTTP tetikleyicilerinin tümü, kendi paylaşılan örnekleri olan tüm Blob (Event Grid) ve tüm Dayanıklı İşlevler tetikleyicileri gibi aynı örneklerde bir grup olarak birlikte ölçeklendirilir.
Aşağıdaki işlevlere sahip bir Flex Consumption planı tarafından barındırılan bir işlev uygulamasını düşünün:
| işlev1 | işlev2 | işlev3 | işlev4 | işlev5 | işlev6 | işlev7 |
|---|---|---|---|---|---|---|
| HTTP tetikleyicisi | HTTP tetikleyicisi | Düzenleme tetikleyicisi (Dayanıklı) | Etkinlik tetikleyicisi (Dayanıklı) | Service Bus tetikleyicisi | Service Bus tetikleyicisi | Event Hubs tetikleyicisi |
Bu örnekte:
- HTTP ile tetiklenen iki işlev (
function1vefunction2) kendi örneklerinde birlikte çalışır ve HTTP eşzamanlılık ayarlarına göre birlikte ölçeklendirilir. - İki Dayanıklı işlevin (
function3vefunction4) her ikisi de kendi örneklerinde birlikte çalışır ve yapılandırılmış eşzamanlılık sınırlamalarına göre birlikte ölçeklendirilir. - Service Bus ile tetiklenen işlev
function5kendi içinde çalışır ve Service Bus kuyrukları ve konu başlıkları için hedef tabanlı ölçeklendirme kurallarına göre bağımsız olarak ölçeklendirilir. - Service Bus ile tetiklenen işlev
function6kendi içinde çalışır ve Service Bus kuyrukları ve konu başlıkları için hedef tabanlı ölçeklendirme kurallarına göre bağımsız olarak ölçeklendirilir. - Event Hubs tetikleyicisi (
function7) kendi örneklerinde çalışır ve Event Hubs için hedef tabanlı ölçeklendirme kurallarına göre bağımsız olarak ölçeklendirilir.
Ölçeklenebilir uygulamalar için en iyi yöntemler ve desenler
Bir fonksiyon uygulamasının birçok yönü, ana yapılandırması, çalışma zamanı ayak izi ve kaynak verimliliği gibi ölçeklenme şeklini etkiler. Daha fazla bilgi için performansla ilgili dikkat edilmesi gerekenler makalesinin ölçeklenebilirlik bölümüne bakın. Ayrıca, işlev uygulamanızın ölçeklendirilmesiyle bağlantıların nasıl davrandığını da bilmeniz gerekir. Daha fazla bilgi için bkz. Azure İşlevleri'da bağlantıları yönetme.
Uygulamanızda olay tabanlı tetikleyiciler kullanan 100'den fazla fonksiyon varsa, uygulamayı bir veya daha fazla uygulamaya bölmeyi düşünün; her uygulamada 100'den az olay tabanlı fonksiyon bulunuyor.
Python ve Node.jsölçeklendirme hakkında daha fazla bilgi için Azure İşlevleri Python geliştirici kılavuzununÖlçeklendirme ve performans bölümüne ve Azure İşlevleri Node.js geliştirici kılavuzununÖlçeklendirme ve eşzamanlılık bölümüne bakın.
Sonraki adımlar
Daha fazla bilgi için aşağıdaki makalelere bakın: