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ść wywoływania interfejsu Firebase API do zarządzania 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 ją 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 | na 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 | na 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, z której może korzystać każda instancja funkcji | 8 GiB | 32 GiB | Nie | na funkcję |
| Maksymalna ilość pamięci projektu | Ilość pamięci w bajtach, której może używać 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 procesora wirtualnego), 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 ją 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. 60 minut w przypadku funkcji sterowanych zdarzeniami. |
Nie | na wywołanie |
Ograniczenia liczby żądań
| Limit | Opis | Limit (1 generacji) | Limit (2 generacji) | Można ją zwiększyć | Zakres |
|---|---|---|---|---|---|
| Wywołania interfejsu API (ODCZYT) | Wywołania funkcji opisu lub wyświetlania listy 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 nazw DNS wychodzących 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, podczas gdy funkcje w tle skalują się bardziej stopniowo. Możliwość skalowania funkcji zależy od kilku czynników, m.in.:
- Czas potrzebny na zakończenie wykonywania funkcji (funkcje o krótkim czasie działania mogą być zwykle skalowane w górę, aby obsługiwać więcej równoczesnych żą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 ją 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 zdarzeń równoczesnych | 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 generacji |
| 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 generacji |
Osiągnięcie limitu
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 Firebase stronę 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.