Na tej stronie znajdziesz szczegółowe informacje o skalowalnych limitach opartych na wykorzystaniu w przypadku Cloud Functions zgodnie z abonamentem Blaze z płatnością według wykorzystania. Te limity obowiązują w przypadku projektów Firebase, w których funkcje są wdrażane w środowisku wykonawczym Node.js 10.
Abonament Blaze zapewnia dużą liczbę wywołań, czasu obliczeniowego i ruchu internetowego bez opłat. Wdrażanie funkcji wiąże się jednak z niewielkimi opłatami za miejsce na dane używane na potrzeby kontenera funkcji. Więcej informacji znajdziesz w najczęstszych pytaniach dotyczących Firebase.
Limity dla Firebase obejmują 4 obszary:
Limity zasobów
Mają one wpływ na łączną ilość zasobów, które mogą wykorzystywać Twoje funkcje.
Limity czasu
Wpływają one na czas działania.
Ograniczenia liczby żądań
Wpływają one na częstotliwość, z jaką możesz wywoływać interfejs API Firebase, aby zarządzać funkcjami.
Limity sieci
Wpływają one na połączenia wychodzące i limity instancji.
Różne rodzaje limitów opisujemy bardziej szczegółowo poniżej. Różnice między limitami dla Firebase (1 generacji) i Firebase (2 generacji) są podane w odpowiednich miejscach.
Limity zasobów
Limity zasobów wpływają na łączną ilość zasobów, które mogą wykorzystywać Twoje funkcje. Zakres regionalny dotyczy każdego projektu, a każdy projekt ma własne limity.
Limit | Opis | Limit (1 generacji) | Limit (2 generacji) | Można zwiększyć | Zakres |
---|---|---|---|---|---|
Liczba funkcji | Łączna liczba funkcji, które można wdrożyć w danym regionie | 1000 | 1000 minus liczba wdrożonych usług Cloud Run | Nie | według regionu |
Maksymalny rozmiar wdrożenia | Maksymalny rozmiar pojedynczego wdrożenia funkcji | 100 MB (skompresowane) w przypadku źródeł. 500 MB (bez kompresji) w przypadku źródeł i modułów. |
Nie dotyczy | Nie | na funkcję |
Maksymalny rozmiar nieskompresowanego żądania HTTP | Dane wysyłane do funkcji HTTP w żądaniu HTTP | 10 MB | 32 MB | Nie | za wywołanie |
Maksymalny rozmiar nieskompresowanej odpowiedzi HTTP | Dane wysyłane z funkcji HTTP w odpowiedzi HTTP | 10 MB | 10 MB w przypadku strumieniowania odpowiedzi. 32 MB w przypadku odpowiedzi nieprzesyłanych strumieniowo. |
Nie | za wywołanie |
Maksymalny rozmiar zdarzenia w przypadku funkcji reagujących na zdarzenia | Dane wysyłane w zdarzeniach do funkcji w tle | 10 MB | 512 KB w przypadku zdarzeń Eventarc. 10 MB w przypadku wydarzeń starszego typu. |
Nie | na zdarzenie |
Maksymalna ilość pamięci funkcji | Ilość pamięci, jaką może wykorzystywać każda instancja funkcji | 8 GiB | 32 GiB | Nie | na funkcję |
Maksymalna ilość pamięci projektu | Ilość pamięci (w bajtach), z której może korzystać projekt. Jest ona mierzona jako łączna suma pamięci żądanej przez użytkowników w instancjach funkcji w ciągu 1 minuty. | Zależy od wybranego regionu. Ten limit może być wyższy w regionach o dużej przepustowości lub niższy w regionach otwartych niedawno. | Nie dotyczy | Tak | na projekt i region |
Maksymalne wykorzystanie procesora w projekcie | Ilość procesora (w mili-procesorach wirtualnych), z której może korzystać projekt. Jest ona mierzona jako łączna suma procesorów żądanych przez użytkowników w instancjach funkcji w ciągu 1 minuty. | Zależy od wybranego regionu. Ten limit może być wyższy w regionach o dużej przepustowości lub niższy w regionach otwartych niedawno. | Nie dotyczy | Tak | na projekt i region |
Limity czasu
Limit | Opis | Limit (1 generacji) | Limit (2 generacji) | Można zwiększyć | Zakres |
---|---|---|---|---|---|
Maksymalny czas trwania funkcji | Maksymalny czas, przez jaki funkcja może działać, zanim zostanie przymusowo zakończona. | 540 sekund | 60 minut w przypadku funkcji HTTP. 9 minut w przypadku funkcji sterowanych zdarzeniami. |
Nie | za wywołanie |
Ograniczenia liczby żądań
Limit | Opis | Limit (1 generacji) | Limit (2 generacji) | Można zwiększyć | Zakres |
---|---|---|---|---|---|
Wywołania interfejsu API (ODCZYT) | Wywołania opisujące lub wyświetlające listę funkcji za pomocą interfejsu Firebase API | 5000 na 100 sekund | 1200 na 60 sekund | Tylko w przypadku pierwszej generacji | na projekt (1 generacji) na region (2 generacji) |
Wywołania interfejsu API (ZAPIS) | Wywołania funkcji wdrażania lub usuwania za pomocą interfejsu Firebase API | 80 na 100 sekund | 60 na 60 sekund | Brak 1 | na projekt (1 generacji) na region (2 generacji) |
Wywołania interfejsu API (CALL) | Wywołania interfejsu API „call” | 16 na 100 sekund | Nie dotyczy | Brak 2 | na projekt |
Limity sieci
Informacje o limitach żądań sieciowych i przepustowości w przypadku Firebase (2 generacji) znajdziesz w artykule Limity sieci.
W przypadku Firebase (1 generacji) obowiązują te limity sieciowe:
- Połączenia wychodzące na sekundę na instancję: 500 (nie można zwiększyć)
- Rozpoznawanie wychodzących nazw DNS na sekundę na instancję: 100 (nie można zwiększyć)
- Maksymalna liczba pakietów na sekundę na instancję: 80 000
- Maksymalna liczba bitów na sekundę na instancję: 100 000 000
Skalowalność
Firebase wywoływane przez HTTP szybko się skalują, aby obsłużyć przychodzący ruch, a funkcje w tle skalują się wolniej. Możliwość skalowania funkcji zależy od kilku czynników, takich jak:
- Czas potrzebny na zakończenie wykonywania funkcji (funkcje o krótkim czasie działania mogą zwykle obsługiwać większą liczbę jednoczesnych żądań).
- Czas potrzebny na zainicjowanie funkcji podczas uruchomienia „na zimno”.
- Odsetek błędów funkcji.
czynniki przejściowe, takie jak obciążenie regionalne i pojemność centrum danych;
Dodatkowe limity dla funkcji w tle
Limit | Opis | Limit | Można zwiększyć | Zakres | Wersja usługi |
---|---|---|---|---|---|
Maksymalna liczba równoczesnych wywołań | Maksymalna liczba jednoczesnych wywołań pojedynczej funkcji Przykład: jeśli obsługa każdego zdarzenia trwa 100 sekund, średnia częstotliwość wywołań będzie ograniczona do 30 na sekundę. |
3000 | Tak | na funkcję | Tylko 1 generacja |
Maksymalna liczba wywołań | Maksymalna liczba zdarzeń obsługiwanych przez jedną funkcję Przykład: jeśli obsługa zdarzenia trwa 100 ms, częstotliwość wywołań będzie ograniczona do 1000 na sekundę, nawet jeśli średnio równolegle obsługiwanych jest tylko 100 żądań. |
1000 na sekundę | Nie | na funkcję | Tylko 1 generacja |
Maksymalny rozmiar danych zdarzenia równoczesnego | Maksymalny łączny rozmiar zdarzeń przychodzących do równoczesnych wywołań pojedynczej funkcji Przykład: jeśli zdarzenia mają rozmiar 1 MB, a ich przetwarzanie trwa 10 sekund, średnia szybkość wyniesie 1 zdarzenie na sekundę, ponieważ 11 zdarzenie nie zostanie przetworzone, dopóki nie zakończy się przetwarzanie jednego z pierwszych 10 zdarzeń. |
10 MB | Nie | na funkcję | 1 i 2 generacja |
Maksymalna przepustowość przychodzących zdarzeń | Maksymalna przepustowość zdarzeń przychodzących do jednej funkcji Przykład: jeśli zdarzenia mają rozmiar 1 MB, maksymalna częstotliwość wywoływania może wynosić 10 na sekundę, nawet jeśli funkcje kończą się w ciągu 100 ms. |
10 MB na sekundę | Nie | na funkcję | 1 i 2 generacja |
Gdy osiągniesz limit
Gdy funkcja wykorzysta wszystkie przydzielone zasoby, staną się one niedostępne do czasu odświeżenia lub zwiększenia limitu. Może to oznaczać, że Twoja funkcja i wszystkie inne funkcje w tym samym projekcie nie będą działać do tego czasu. Funkcja zwraca kod błędu HTTP 500, gdy jeden z zasobów przekracza limit i funkcja nie może się wykonać.
Aby zwiększyć limity powyżej wartości domyślnych podanych tutaj, otwórz Firebasestronę Limity, wybierz limity, które chcesz zmodyfikować, kliknij Edytuj limity, podaj informacje o użytkowniku, jeśli pojawi się odpowiedni komunikat, i wpisz nowy limit dla każdego wybranego limitu.
Limity dotyczące wdrażania w wierszu poleceń Firebase
W przypadku każdej funkcji wdrażanej przez wiersz poleceń Firebase obowiązują te rodzaje limitów szybkości i czasu:
- Wywołania interfejsu API (ODCZYT) – 1 wywołanie na wdrożenie, niezależnie od liczby funkcji.
- Limit: 5000 na 100 sekund
- Wywołania interfejsu API (ZAPIS) – 1 wywołanie na funkcję
- Limit: 80 na 100 sekund
Zapoznaj się też z informacjami o wierszu poleceń Firebase.