Tüketime dayalı maliyetleri tahmin etme

Bu makalede, Tüketim ve Esnek Tüketim barındırma planları için plan maliyetlerini nasıl tahmin ettiğiniz gösterilmektedir.

Azure İşlevleri şu anda işlev uygulamalarınız için dört farklı barındırma planı sunar ve her plan kendi fiyatlandırma modeline sahiptir:

Planlama Açıklama
Tüketim Yalnızca işlev uygulamanızın çalıştığı süre için ücretlendirilirsiniz. Bu plan, abonelik başına ücretsiz bir hibe içerir.
Esnek Tüketim planı İşlevlerinizin üzerinde çalıştığı örneklerin yanı sıra her zaman hazır olan örneklerin yürütme süresi için ödeme alırsınız. Örnekler, gelen olayların sayısına göre dinamik olarak eklenir ve kaldırılır. Ayrıca sanal ağ tümleştirmeyi de destekler.
Premium Tüketim planıyla aynı özellikleri ve ölçeklendirme mekanizmasını sağlar, ancak gelişmiş performans ve sanal ağ tümleştirmesi sağlar. Maliyet, seçtiğiniz fiyatlandırma katmanını temel alır. Daha fazla bilgi edinmek için bkz. Premium planı Azure İşlevleri.
Ayrılmış (App Service)
(temel katman veya üzeri)
Ayrılmış VM'lerde veya yalıtımlı olarak çalıştırmanız gerektiğinde, özel görüntüler kullanın veya fazla App Service planı kapasitenizi kullanmak istiyorsunuz. Normal App Service planı faturalaması kullanır. Maliyet, seçtiğiniz fiyatlandırma katmanını temel alır.

Önemli

Flex Consumption planı şu anda önizleme aşamasındadır.

İşlev yürütmeleriniz için her zaman özellik, performans ve maliyet gereksinimlerini en iyi destekleyen planı seçmelisiniz. Daha fazla bilgi edinmek için bkz. Azure İşlevleri ölçeklendirme ve barındırma.

Bu makalede Tüketim ve Esnek Tüketim planlarına odaklanılır çünkü bu planlarda faturalama, her örnekteki etkin yürütme dönemlerine bağlıdır.

Dayanıklı İşlevler bu planların her ikisinde de çalıştırılabilir. Dayanıklı İşlevler kullanırken maliyetle ilgili dikkat edilmesi gerekenler hakkında daha fazla bilgi edinmek için bkz. faturalama Dayanıklı İşlevler.

Tüketime dayalı maliyetler

Ücretsiz hibeler de dahil olmak üzere tüketime dayalı maliyetlerin hesaplanma şekli belirli plana bağlıdır. En güncel maliyet ve hibe bilgileri için Azure İşlevleri fiyatlandırma sayfasına bakın.

Tek bir işlev yürütmesinin yürütme maliyeti GB saniye cinsinden ölçülür. Yürütme maliyeti, bellek kullanımı yürütme süresiyle birleştirilerek hesaplanır. Daha uzun maliyetler için çalışan bir işlev, daha fazla bellek tüketen bir işlev gibi daha fazla maliyet sağlar.

İşlev tarafından kullanılan bellek miktarının sabit kaldığı bir durum düşünün. Bu durumda, maliyeti hesaplamak basit bir çarpmadır. Örneğin işlevinizin 3 saniye boyunca 0,5 GB tüketildiğini varsayalım. Ardından yürütme maliyeti olur 0.5GB * 3s = 1.5 GB-seconds.

Bellek kullanımı zaman içinde değiştiğinden, hesaplama temelde zaman içindeki bellek kullanımının ayrılmaz bir parçasıdır. Sistem bu hesaplamayı, düzenli aralıklarla işlemin bellek kullanımını (alt işlemlerle birlikte) örnekleme yaparak yapar. Fiyatlandırma sayfasında belirtildiği gibi, bellek kullanımı en yakın 128 MB demetine yuvarlandı. İşleminiz 160 MB kullanırken 256 MB ücretlendirilirsiniz. Hesaplama eşzamanlılığı hesaba katarak aynı işlemdeki birden çok eşzamanlı işlev yürütmesini dikkate alır.

Not

CPU kullanımı yürütme maliyetinde doğrudan dikkate alınmasa da, işlevin yürütme süresini etkilediğinde maliyet üzerinde bir etkisi olabilir.

HTTP ile tetiklenen bir işlev için, işlev kodunuz yürütülmeye başlamadan önce bir hata oluştuğunda yürütme için ücret alınmaz. Bu, API anahtarı doğrulaması veya App Service Kimlik Doğrulaması / Yetkilendirme özelliği nedeniyle platformdan gelen 401 yanıtının yürütme maliyetinize karşı saymama anlamına gelir. Benzer şekilde, 5xx durum kodu yanıtları, işleviniz isteği işlemeden önce platformda gerçekleştiğinde sayılmaz. İşlev kodunuz yürütülmeye başladıktan sonra platform tarafından oluşturulan bir 5xx yanıtı, hata işlev kodunuzdan oluşturulmasa bile yürütme olarak sayılır.

İşlevlerinizi herhangi bir planda çalıştırmanın genel maliyetini tahmin ederken, İşlevler çalışma zamanının her biri ayrı olarak faturalandırılan diğer birkaç Azure hizmetini kullandığını unutmayın. İşlev uygulamaları için fiyatlandırma tahmini yaptığınızda, diğer Azure hizmetleriyle tümleştirdiğiniz tüm tetikleyiciler ve bağlamalar, bu diğer hizmetleri oluşturmanızı ve ödemenizi gerektirir.

Tüketim planında çalışan işlevler için toplam maliyet, işlevlerinizin yürütme maliyetinin yanı sıra bant genişliği ve diğer hizmetlerin maliyetidir.

İşlev uygulamanızın ve ilgili hizmetlerin genel maliyetlerini tahmin ederken Azure fiyatlandırma hesaplayıcısını kullanın.

İlgili maliyet Açıklama
Depolama hesabı Her işlev uygulaması, ayrı olarak faturalandırılan ilişkili bir Genel Amaçlı Azure Depolama hesabınız olmasını gerektirir. Bu hesap İşlevler çalışma zamanı tarafından dahili olarak kullanılır, ancak Depolama tetikleyiciler ve bağlamalar için de kullanabilirsiniz. Depolama hesabınız yoksa, işlev uygulaması oluşturulduğunda sizin için bir tane oluşturulur. Daha fazla bilgi edinmek için bkz. hesap gereksinimleri Depolama.
Application Insights İşlevler, işlev uygulamalarınız için yüksek performanslı bir izleme deneyimi sağlamak için Uygulama Analizler'ne dayanır. Gerekli olmasa da Uygulama Analizler tümleştirmesini etkinleştirmeniz gerekir. Her ay ücretsiz telemetri verileri sağlanır. Daha fazla bilgi edinmek için Bkz . Azure İzleyici fiyatlandırma sayfası.
Ağ bant genişliği Veri taşımanın yönüne ve senaryosuna bağlı olarak veri aktarımı maliyetlerine neden olabilirsiniz. Daha fazla bilgi için bkz . Bant genişliği fiyatlandırma ayrıntıları.

Yürütme süresini etkileyen davranışlar

İşlevlerinizin aşağıdaki davranışları yürütme süresini etkileyebilir:

  • Tetikleyiciler ve bağlamalar: İşlev bağlamalarınızdaki girdileri okumak ve çıkış yazmak için geçen süre yürütme süresi olarak sayılır. Örneğin, işleviniz bir Azure depolama kuyruğuna ileti yazmak için bir çıkış bağlaması kullandığında yürütme süreniz, işlev maliyetinin hesaplamasına dahil edilen iletiyi kuyruğa yazmak için geçen süreyi içerir.

  • Zaman uyumsuz yürütme: İşlevinizin zaman uyumsuz isteğin sonuçlarını beklediği süre (await C#'de) yürütme süresi olarak sayılır. GB saniye hesaplaması, işlevin başlangıç ve bitiş zamanına ve bu dönemdeki bellek kullanımına bağlıdır. Cpu etkinliği açısından bu süre boyunca gerçekleşenler hesaplamaya dahil edilmez. Dayanıklı İşlevler kullanarak zaman uyumsuz işlemler sırasında maliyetleri düşürebilirsiniz. Düzenleyici işlevlerinde beklemelerde harcanan zaman için faturalandırılmazsınız.

Faturanızda Toplam Yürütmeler - İşlevler ve Yürütme Süresi - İşlevler'in maliyetle ilgili verilerini ve gerçek faturalanan maliyetleri görüntüleyebilirsiniz. Ancak bu fatura verileri, geçmiş bir fatura dönemi için aylık bir toplama işlemidir.

İşlev uygulaması düzeyinde ölçümler

İşlevlerinizin maliyet etkisini daha iyi anlamak için Azure İzleyici'yi kullanarak işlev uygulamalarınız tarafından şu anda oluşturulan maliyetle ilgili ölçümleri görüntüleyebilirsiniz.

Tüketim planı işlev uygulamalarınıza ilişkin maliyetle ilgili verileri grafik biçiminde görüntülemek için Azure İzleyici ölçüm gezginini kullanın.

  1. Azure portalında işlev uygulamanıza gidin.

  2. Sol panelde ekranı aşağı kaydırarak İzleme'ye gelin ve Ölçümler'i seçin.

  3. Ölçüm'de, Toplama için İşlev Yürütme Sayısı ve Toplam'ı seçin. Bu, seçilen dönemdeki yürütme sayılarının toplamını grafiğe ekler.

    Grafiğe eklenecek işlev uygulaması ölçümünü tanımlama

  4. Grafiğe İşlev Yürütme Birimleri eklemek için Ölçüm ekle'yi seçin ve 2-4 arası adımları yineleyin.

Sonuçta elde edilen grafik, seçilen zaman aralığındaki her iki yürütme ölçümünü de (bu örnekte iki saat) içerir.

İşlev yürütme sayılarının ve yürütme birimlerinin grafiği

Yürütme birimi sayısı yürütme sayısından çok daha fazla olduğundan grafik yalnızca yürütme birimlerini gösterir.

Bu grafik, mb milisaniye cinsinden ölçülen iki saatlik bir dönemde tüketilen toplam 1,11 milyarı Function Execution Units gösterir. GB saniyeye dönüştürmek için 1024000'e bölün. Bu örnekte işlev uygulaması GB saniye tüketmiş 1110000000 / 1024000 = 1083.98 . Bu değeri alabilir ve İşlevler fiyatlandırma sayfasında geçerli yürütme süresi fiyatıyla çarpabilirsiniz. Bu, yürütme süresiyle ilgili ücretsiz izinler kullandığınızı varsayarsak bu iki saatin maliyetini verir.

İşlev düzeyi ölçümleri

İşlev yürütme birimleri, yürütme süresi ile bellek kullanımınızın birleşimidir ve bu da bellek kullanımını anlamak için zor bir ölçüm olmasını sağlar. Bellek verileri şu anda Azure İzleyici aracılığıyla kullanılabilen bir ölçüm değildir. Ancak, uygulamanızın bellek kullanımını iyileştirmek istiyorsanız Uygulama Analizler tarafından toplanan performans sayacı verilerini kullanabilirsiniz.

Henüz yapmadıysanız işlev uygulamanızda Uygulama Analizler'nı etkinleştirin. Bu tümleştirme etkinleştirildiğinde, bu telemetri verilerini portalda sorgulayabilirsiniz.

İzleyici Ölçümleri verilerini almak için Azure portalında Azure İzleyici ölçüm gezginini veya REST API'lerini kullanabilirsiniz.

Bellek kullanımını belirleme

İzleme'nin altında Günlükler (Analiz) öğesini seçin, ardından aşağıdaki telemetri sorgusunu kopyalayıp sorgu penceresine yapıştırın ve Çalıştır'ı seçin. Bu sorgu, örneklenen her seferde toplam bellek kullanımını döndürür.

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

Sonuçlar aşağıdaki örneğe benzer:

Zaman damgası [UTC] Adı değer
12.09.2019, 01:05:14.947 Özel Bayt Sayısı 209,932,288
12.09.2019, 01:06:14.994 Özel Bayt Sayısı 212,189,184
12.09.2019, 01:06:30.010 Özel Bayt Sayısı 231,714,816
12.09.2019, 01:07:15.040 Özel Bayt Sayısı 210,591,744
12.09.2019, 01:12:16.285 Özel Bayt Sayısı 216,285,184
12.09.2019, 01:12:31.376 Özel Bayt Sayısı 235,806,720

Süreyi belirleme

Azure İzleyici, İşlevler için işlev uygulaması olan kaynak düzeyinde ölçümleri izler. Uygulama Analizler tümleştirmesi, ölçümleri işlev başına temel alır. Bir işlevin ortalama süresini almak için örnek bir analiz sorgusu aşağıda verilmiştir:

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

Sonraki adımlar