Na tej stronie znajdziesz szczegółowe informacje o skalowalnych limitach wykorzystania Cloud Functions w ramach planu cenowego Blaze z płatnością według wykorzystania. Limity te obowiązują w projektach Firebase, w których funkcje są wdrażane w środowisku wykonawczym Node.js 10.
Abonament Blaze zapewnia bezpłatnie dużą liczbę wywołań, czasu obliczeniowego i ruchu internetowego. Wdrożenia funkcji wiążą się jednak z niewielkimi opłatami za miejsce na dane używane przez kontener funkcji. Więcej informacji znajdziesz w sekcji Najczęstsze pytania dotyczące Firebase FAQ.
Limity Firebase obejmują 4 obszary:
Limity zasobów
Wpływają one na łączną ilość zasobów, które mogą wykorzystywać Twoje funkcje.
Limity czasu
Wpływają one na czas działania funkcji.
Ograniczenia liczby żądań
Wpływają one na częstotliwość, z jaką możesz wywoływać interfejs Firebase API aby zarządzać funkcjami.
Limity sieci
Wpływają one na limity połączeń wychodzących i instancji.
Różne rodzaje limitów opisujemy bardziej szczegółowo poniżej. W stosownych przypadkach wskazujemy różnice między limitami w Firebase (1 generacji) a Firebase (2 generacji).
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 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 | 10MB | 32MB | Nie | na wywołanie |
| Maksymalny rozmiar nieskompresowanej odpowiedzi HTTP | Dane wysyłane z funkcji HTTP w odpowiedzi HTTP | 10MB | 10 MB w przypadku odpowiedzi strumieniowych. 32 MB w przypadku odpowiedzi niestrumieniowych. |
Nie | na wywołanie |
| Maksymalny rozmiar zdarzenia w przypadku funkcji wywoływanych przez zdarzenia | Dane wysyłane w zdarzeniach do funkcji w tle | 10MB | 512 KB w przypadku zdarzeń Eventarc. 10 MB w przypadku starszych zdarzeń. |
Nie | na zdarzenie |
| Maksymalna ilość pamięci funkcji | Ilość pamięci, z której może korzystać każda instancja funkcji | 8GiB | 32GiB | Nie | na funkcję |
| Maksymalna pamięć projektu | Ilość pamięci w bajtach, z której może korzystać projekt. Jest ona mierzona jako łączna suma pamięci żądanej przez użytkownika 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 pojemności lub niższy w regionach otwartych niedawno. | Nie dotyczy | Tak | na projekt i region |
| Maksymalne wykorzystanie procesora w projekcie | Ilość procesora wirtualnego w miliprocesorach wirtualnych, z której może korzystać projekt. Jest ona mierzona jako łączna suma procesora żądanego przez użytkownika 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 pojemnoś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 działania funkcji przed wymuszeniem jej zakończenia | 540 sekund |
|
Nie | na 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 służące do opisywania lub wyświetlania listy funkcji za pomocą interfejsu Firebase API | 5000 na 100 sekund | 1200 na 60 sekund | Tylko w przypadku 1 generacji | na projekt (1 generacji) na region (2 generacji) |
| Wywołania interfejsu API (ZAPIS) | Wywołania służące do wdrażania lub usuwania funkcji za pomocą interfejsu Firebase API | 80 na 100 sekund | 60 na 60 sekund | Nie 1 | na projekt (1 generacji) na region (2 generacji) |
| Wywołania interfejsu API (WYWOŁANIE) | Wywołania interfejsu API „call” | 16 na 100 sekund | Nie dotyczy | Nie 2 | na projekt |
Limity sieci
Informacje o Firebase (2 generacji) limitach żądań i przepustowości sieci znajdziesz w artykule Limity sieci.
W przypadku Firebase (1 generacji) obowiązują te limity sieci:
- Liczba połączeń wychodzących na sekundę na instancję: 500 (nie można zwiększyć)
- Liczba rozpoznawania 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 skalują się w górę, aby obsługiwać ruch przychodzący, natomiast funkcje w tle skalują się stopniowo. Możliwość skalowania funkcji zależy od kilku czynników, m.in.:
- Czas potrzebny na wykonanie funkcji (funkcje krótkotrwałe mogą zwykle skalować się w górę, aby obsługiwać więcej żądań równoczesnych).
- Czas potrzebny na zainicjowanie funkcji podczas uruchomienia „na zimno”.
- Współczynnika błędów funkcji.
Przejściowych czynników, takich jak obciążenie regionalne i pojemność centrum danych.
Dodatkowe limity funkcji w tle
| Limit | Opis | Limit | Można zwiększyć | Zakres | Wersja usługi |
|---|---|---|---|---|---|
| Maksymalna liczba równoczesnych wywołań | Maksymalna liczba równoczesnych 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 w przypadku 1 generacji |
| Maksymalna częstotliwość wywołań | Maksymalna częstotliwość obsługi zdarzeń przez pojedynczą 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 równolegle obsługiwanych jest średnio tylko 100 żądań. |
1000 na sekundę | Nie | na funkcję | Tylko w przypadku 1 generacji |
| Maksymalny rozmiar danych równoczesnych zdarzeń | 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 częstotliwość wyniesie 1 zdarzenie na sekundę, ponieważ 11 zdarzenie nie zostanie przetworzone, dopóki nie zakończy się przetwarzanie jednego z pierwszych 10 zdarzeń nie zakończy się |
10MB | Nie | na funkcję | 1 i 2 generacji |
| Maksymalna przepustowość zdarzeń przychodzących | Maksymalna przepustowość zdarzeń przychodzących do pojedynczej funkcji Przykład: jeśli zdarzenia mają rozmiar 1 MB, częstotliwość wywołań może wynosić maksymalnie 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 do tego czasu funkcja i wszystkie inne funkcje w tym samym projekcie nie będą działać. Gdy jeden z zasobów przekroczy limit i funkcja nie będzie mogła się wykonać, zwróci ona kod błędu HTTP 500.
Aby zwiększyć limity powyżej wartości domyślnych wymienionych tutaj, otwórz stronę Firebase Limity, wybierz limity, które chcesz zmodyfikować, kliknij Edytuj limity, w razie potrzeby podaj informacje o użytkowniku i wpisz nowy limit dla każdego wybranego limitu.
Limity wiersza poleceń Firebase dotyczące wdrażania
W przypadku każdej funkcji, którą wdraża wiersz poleceń Firebase, obowiązują te limity liczby żądań 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.