Udostępnij za pośrednictwem


Szacowanie kosztów opartych na użyciu

W tym artykule pokazano, jak oszacować koszty planu dla planów hostingu Zużycie i Flex Consumption.

Usługa Azure Functions oferuje obecnie cztery różne plany hostingu dla aplikacji funkcji, a każdy plan ma własny model cen:

Plan Opis
Zużycie Opłaty są naliczane tylko za czas działania aplikacji funkcji. Ten plan obejmuje bezpłatne udzielanie na podstawie subskrypcji.
Plan Flex Consumption Płacisz za czas wykonywania dla wystąpień, na których działają funkcje, oraz za wszystkie zawsze gotowe wystąpienia. Wystąpienia są dynamicznie dodawane i usuwane na podstawie liczby zdarzeń przychodzących. Obsługuje również integrację z siecią wirtualną.
Premium Zapewnia te same funkcje i mechanizm skalowania co plan Zużycie, ale z ulepszoną wydajnością i integracją sieci wirtualnej. Koszt jest oparty na wybranej warstwie cenowej. Aby dowiedzieć się więcej, zobacz Plan premium usługi Azure Functions.
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 usługi App Service. Używa regularnego rozliczeń planu usługi App Service. Koszt jest oparty na wybranej warstwie cenowej.

Ważne

Plan Flex Consumption jest obecnie dostępny w wersji zapoznawczej.

Zawsze należy wybrać plan, który najlepiej obsługuje wymagania dotyczące funkcji, wydajności i kosztów dla wykonywania funkcji. Aby dowiedzieć się więcej, zobacz Skalowanie i hostowanie usługi Azure Functions.

Ten artykuł koncentruje się na planach Zużycie i Elastyczne zużycie, ponieważ w tych planach rozliczenia zależą od aktywnych okresów wykonań wewnątrz każdego wystąpienia.

Rozszerzenie Durable Functions można również uruchomić w obu tych planach. Aby dowiedzieć się więcej o zagadnieniach związanych z kosztami podczas korzystania z rozszerzenia Durable Functions, zobacz Rozliczenia usługi Durable Functions.

Koszty oparte na użyciu

Sposób obliczania kosztów opartych na użyciu, w tym bezpłatnych dotacji, zależy od konkretnego planu. Aby uzyskać najbardziej aktualne informacje o kosztach i udzielaniu, zobacz stronę cennika usługi Azure Functions.

Koszt wykonywania pojedynczej funkcji jest mierzony w GB-sekund. 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ż 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ść, czyli wiele współbieżnych wykonań 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 usługi 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 z kodu 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 szacowania cen aplikacji funkcji wszystkie wyzwalacze i powiązania, które są zintegrowane z innymi usługami platformy Azure, wymagają utworzenia innych usług i płacenia za te inne usługi.

W przypadku funkcji działających w planie Zużycie całkowity koszt jest kosztem wykonywania funkcji oraz kosztem przepustowości i innych usług.

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

Powiązany koszt opis
Konto magazynu Każda aplikacja funkcji wymaga skojarzonego konta usługi Azure Storage ogólnego przeznaczenia, 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ć dla wyzwalaczy i powiązań usługi Storage. Jeśli nie masz konta magazynu, zostanie on utworzony podczas tworzenia aplikacji funkcji. Aby dowiedzieć się więcej, zobacz Wymagania dotyczące konta magazynu.
Application Insights Funkcje korzystają z Szczegółowe informacje aplikacji, aby zapewnić środowisko monitorowania o wysokiej wydajności dla aplikacji funkcji. Mimo że nie jest to wymagane, należy włączyć integrację usługi Application Szczegółowe informacje. Bezpłatne udzielanie danych telemetrycznych jest uwzględniane co miesiąc. Aby dowiedzieć się więcej, zobacz stronę cennika usługi Azure Monitor.
Przepustowość sieci W zależności od kierunku i scenariusza przenoszenia danych można ponieść koszty transferu 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 odczytywanie danych wejściowych z i zapisywanie 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. Obliczenie GB-sekundy jest oparte na godzinie 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 obliczeniach. Możesz zmniejszyć koszty podczas operacji asynchronicznych przy użyciu rozszerzenia Durable Functions. Nie są naliczane opłaty za czas spędzony w oczekiwaniu na funkcje orkiestratora.

Na fakturze można 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, aby wyświetlić metryki związane z kosztami, które są obecnie generowane przez aplikacje funkcji.

Eksplorator metryk usługi Azure Monitor umożliwia wyświetlanie danych związanych z kosztami dla aplikacji funkcji planu zużycie w formacie graficznym.

  1. W witrynie 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 wykonań funkcji i Sumuj dla agregacji. Spowoduje to dodanie sumy liczby wykonań w wybranym okresie do wykresu.

    Definiowanie metryki aplikacji funkcji do 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 wykonań funkcji i jednostek wykonywania

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

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

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 aplikację Szczegółowe informacje.

Jeśli jeszcze tego nie zrobiono, włącz pozycję Application Szczegółowe informacje 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 witrynie Azure Portal lub interfejsów API 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ą jak w poniższym przykładzie:

znacznik czasu [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 AM 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 aplikacji Szczegółowe informacje emituje metryki na podstawie 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