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.
Diğer ilgili maliyetler
İş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 tetikleyicileri 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 . Depolama hesabı gereksinimleri. |
Application Insights | İşlevler , işlev uygulamalarınız için yüksek performanslı bir izleme deneyimi sağlamak için Application Insights'a dayanır. Gerekli olmasa da Application Insights 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.
Maliyetle ilgili verileri görüntüleme
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.
Sol panelde ekranı aşağı kaydırarak İzleme'ye gelin ve Ölçümler'i seçin.
Ö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 İş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.
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 Application Insights tarafından toplanan performans sayacı verilerini kullanabilirsiniz.
Henüz yapmadıysanız işlev uygulamanızda Application Insights'ı 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. Application Insights tümleştirmesi, ölçümleri işlev başına temel alarak gösterir. 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 |