Szacowanie kosztów planu zużycia

Obecnie istnieją trzy typy planów hostingu dla aplikacji działającej w Azure Functions, a każdy plan ma własny model cen:

Planowanie Opis
Zużycie Opłaty są naliczane tylko za czas działania aplikacji funkcji. Ten plan obejmuje bezpłatną dotację na subskrypcję.
Premium Zapewnia te same funkcje i mechanizm skalowania co plan Zużycie, ale z zwiększoną wydajnością i dostępem do sieci wirtualnej. Koszt jest oparty na wybranej warstwie cenowej. Aby dowiedzieć się więcej, zobacz Azure Functions plan Premium.
Dedykowane (App Service)
(warstwa podstawowa lub nowsza)
Jeśli musisz uruchomić w dedykowanych maszynach wirtualnych lub w izolacji, użyj obrazów niestandardowych lub chcesz użyć nadmiarowej pojemności planu App Service. Używa regularnych App Service rozliczeń planu. Koszt jest oparty na wybranej warstwie cenowej.

Wybrano plan, który najlepiej obsługuje wymagania dotyczące wydajności i kosztów funkcji. Aby dowiedzieć się więcej, zobacz Azure Functions skalowanie i hosting.

Ten artykuł dotyczy tylko planu zużycie, ponieważ ten plan powoduje zmienne koszty. Ten artykuł zastępuje artykuł Często zadawane pytania dotyczące rozliczeń kosztów planu użycia .

Durable Functions można również uruchomić w planie Zużycie. Aby dowiedzieć się więcej o zagadnieniach dotyczących kosztów podczas korzystania z Durable Functions, zobacz Durable Functions rozliczenia.

Koszty planu zużycia

Koszt wykonywania pojedynczej funkcji jest mierzony w GB-sekundach. Koszt wykonania jest obliczany przez połączenie użycia pamięci z czasem wykonywania. Funkcja, która działa dłużej kosztuje więcej, podobnie jak funkcja, która zużywa więcej pamięci.

Rozważmy przypadek, w którym ilość pamięci używanej przez funkcję pozostaje stała. W takim przypadku obliczanie kosztu jest proste mnożenie. Załóżmy na przykład, że funkcja zużywała 0,5 GB przez 3 sekundy. Następnie koszt wykonania to 0.5GB * 3s = 1.5 GB-seconds.

Ponieważ użycie pamięci zmienia się w czasie, obliczenie jest zasadniczo integralną częścią użycia pamięci w czasie. System wykonuje to obliczenie, próbkując użycie pamięci procesu (wraz z procesami podrzędnymi) w regularnych odstępach czasu. Jak wspomniano na stronie cennika, użycie pamięci jest zaokrąglane do najbliższego zasobnika 128 MB. Gdy proces korzysta z 160 MB, opłata jest naliczana za 256 MB. Obliczenie uwzględnia współbieżność, która jest wieloma współbieżnościami wykonywania funkcji w tym samym procesie.

Uwaga

Chociaż użycie procesora CPU nie jest bezpośrednio brane pod uwagę w kosztach wykonywania, może mieć wpływ na koszt, gdy ma wpływ na czas wykonywania funkcji.

W przypadku funkcji wyzwalanej przez protokół HTTP, gdy wystąpi błąd przed rozpoczęciem wykonywania kodu funkcji, nie są naliczane opłaty za wykonanie. Oznacza to, że 401 odpowiedzi z platformy z powodu weryfikacji klucza interfejsu API lub funkcji uwierzytelniania/autoryzacji App Service nie są liczone względem kosztów wykonania. Podobnie odpowiedzi kodu stanu 5xx nie są liczone, gdy wystąpią na platformie przed przetworzeniem żądania przez funkcję. 5xx odpowiedź wygenerowana przez platformę po rozpoczęciu wykonywania kodu funkcji jest nadal liczone jako wykonanie, nawet jeśli błąd nie jest zgłaszany przez kod funkcji.

Podczas szacowania ogólnego kosztu uruchamiania funkcji w dowolnym planie należy pamiętać, że środowisko uruchomieniowe usługi Functions używa kilku innych usług platformy Azure, które są rozliczane oddzielnie. Podczas obliczania cen dla aplikacji funkcji wszystkie wyzwalacze i powiązania, które są zintegrowane z innymi usługami platformy Azure, wymagają utworzenia i zapłaty za te dodatkowe usługi.

W przypadku funkcji działających w planie Zużycie całkowity koszt to koszt wykonywania funkcji, a także koszt przepustowości i dodatkowych usług.

Podczas szacowania ogólnych kosztów aplikacji funkcji i powiązanych usług skorzystaj z kalkulatora cen platformy Azure.

Powiązany koszt Opis
Konto magazynu Każda aplikacja funkcji wymaga skojarzonego Ogólnego przeznaczenia konta usługi Azure Storage, które jest rozliczane oddzielnie. To konto jest używane wewnętrznie przez środowisko uruchomieniowe usługi Functions, ale można go również używać do wyzwalaczy i powiązań usługi Storage. Jeśli nie masz konta magazynu, zostanie utworzone dla Ciebie po utworzeniu aplikacji funkcji. Aby dowiedzieć się więcej, zobacz Wymagania dotyczące konta magazynu.
Application Insights Usługa Functions korzysta z usługi Application Insights , aby zapewnić środowisko monitorowania o wysokiej wydajności dla aplikacji funkcji. Chociaż nie jest to wymagane, należy włączyć integrację usługi Application Insights. Bezpłatne przyznawanie danych telemetrycznych jest uwzględniane co miesiąc. Aby dowiedzieć się więcej, zobacz stronę cennika usługi Azure Monitor.
Przepustowość sieci Koszty transferu danych można ponieść w zależności od kierunku i scenariusza przenoszenia danych. Aby dowiedzieć się więcej, zobacz Szczegóły cennika przepustowości.

Zachowania wpływające na czas wykonywania

Następujące zachowania funkcji mogą mieć wpływ na czas wykonywania:

  • Wyzwalacze i powiązania: czas potrzebny na odczyt danych wejściowych z i zapis danych wyjściowych do powiązań funkcji jest liczone jako czas wykonywania. Na przykład gdy funkcja używa powiązania wyjściowego do zapisywania komunikatu w kolejce usługi Azure Storage, czas wykonywania obejmuje czas potrzebny na zapisanie komunikatu w kolejce, który jest uwzględniony w obliczeniu kosztu funkcji.

  • Wykonywanie asynchroniczne: czas oczekiwania funkcji na wyniki żądania asynchronicznego (await w języku C#) jest liowany jako czas wykonywania. Obliczanie gb-sekundy jest oparte na czasie rozpoczęcia i zakończenia funkcji oraz użycia pamięci w tym okresie. To, co dzieje się w tym czasie pod względem aktywności procesora CPU, nie jest uwzględniane w obliczeniu. Możesz zmniejszyć koszty podczas operacji asynchronicznych przy użyciu Durable Functions. Nie są naliczane opłaty za czas spędzony na oczekiwaniach w funkcjach orkiestratora.

Na fakturze możesz wyświetlić dane związane z kosztami łącznych wykonań — funkcje i czas wykonywania — funkcje wraz z rzeczywistymi rozliczanymi kosztami. Jednak te dane faktury są agregacja miesięczna dla ostatniego okresu faktury.

Metryki na poziomie aplikacji funkcji

Aby lepiej zrozumieć wpływ kosztów funkcji, możesz użyć usługi Azure Monitor do wyświetlania metryk związanych z kosztami generowanych obecnie przez aplikacje funkcji.

Użyj Eksploratora metryk usługi Azure Monitor , aby wyświetlić dane związane z kosztami dla aplikacji funkcji Plan użycia w formacie graficznym.

  1. W Azure Portal przejdź do aplikacji funkcji.

  2. W panelu po lewej stronie przewiń w dół do pozycji Monitorowanie i wybierz pozycję Metryki.

  3. W obszarze Metryka wybierz pozycję Liczba wykonywania funkcji i Suma dla agregacji. Spowoduje to dodanie sumy liczby wykonań w wybranym okresie do wykresu.

    Definiowanie metryki aplikacji funkcji w celu dodania do wykresu

  4. Wybierz pozycję Dodaj metryki i powtórz kroki 2–4, aby dodać jednostki wykonywania funkcji do wykresu.

Wynikowy wykres zawiera sumy dla obu metryk wykonywania w wybranym zakresie czasu, co w tym przypadku wynosi dwie godziny.

Wykres liczby wykonywania funkcji i jednostek wykonywania

Ponieważ liczba jednostek wykonywania jest o wiele większa niż liczba wykonań, wykres pokazuje tylko jednostki wykonywania.

Ten wykres przedstawia łącznie 1,11 miliarda Function Execution Units zużytego w okresie dwugodzinnym mierzonym w milisekundach. Aby przekonwertować na GB-s, podziel na 1024000. W tym przykładzie aplikacja funkcji zużywała 1110000000 / 1024000 = 1083.98 GB-sekundy. Możesz użyć tej wartości i pomnożyć bieżącą cenę czasu wykonania na stronie cennika usługi Functions, która daje koszt tych dwóch godzin, przy założeniu, że korzystasz już z dowolnych bezpłatnych dotacji czasu wykonywania.

Metryki na poziomie funkcji

Jednostki wykonywania funkcji to kombinacja czasu wykonywania i użycia pamięci, co utrudnia zrozumienie użycia pamięci. Dane pamięci nie są obecnie dostępne za pośrednictwem usługi Azure Monitor. Jeśli jednak chcesz zoptymalizować użycie pamięci aplikacji, możesz użyć danych licznika wydajności zebranych przez usługę Application Insights.

Jeśli jeszcze tego nie zrobiono, włącz usługę Application Insights w aplikacji funkcji. Po włączeniu tej integracji można wykonywać zapytania dotyczące tych danych telemetrycznych w portalu.

Aby uzyskać dane metryk monitora, możesz użyć eksploratora metryk usługi Azure Monitor w interfejsach API Azure Portal lub REST.

Określanie użycia pamięci

W obszarze Monitorowanie wybierz pozycję Dzienniki (analiza), a następnie skopiuj następujące zapytanie telemetryczne i wklej je w oknie zapytania, a następnie wybierz pozycję Uruchom. To zapytanie zwraca łączne użycie pamięci w każdym próbkowanym czasie.

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

Wyniki wyglądają podobnie do następującego przykładu:

sygnatura czasowa [UTC] name wartość
12.09.2019, 1:05:14.947 Bajty prywatne 209,932,288
12.09.2019, 1:06:14.994 Bajty prywatne 212,189,184
12.09.2019, 1:06:30.010 Bajty prywatne 231,714,816
12.09.2019, 1:07:15.040 Bajty prywatne 210,591,744
12.09.2019, 1:12:16.285 Bajty prywatne 216,285,184
12.09.2019, 1:12:31.376 Bajty prywatne 235,806,720

Określanie czasu trwania

Usługa Azure Monitor śledzi metryki na poziomie zasobu, który dla usługi Functions jest aplikacją funkcji. Integracja usługi Application Insights emituje metryki dla poszczególnych funkcji. Oto przykładowe zapytanie analityczne umożliwiające uzyskanie średniego czasu trwania funkcji:

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

Następne kroki