Na tej stronie szczegółowo opisaliśmy skalowalne limity w Cloud Functions oparte na wykorzystaniu, zgodne z abonamentem Blaze z płatnościami według wykorzystania. Te limity dotyczą projektów Firebase, które wdrażają funkcje w środowisku wykonawczym Node.js 10.
Abonament Blaze zapewnia bezpłatny dostęp do dużej liczby wywołań, czasu obliczeniowego oraz ruchu internetowego. Wdrożenie funkcji wiąże się jednak z opłatami na niewielką skalę za miejsce na dane wykorzystywane na kontener funkcji. Więcej informacji znajdziesz w Najczęstszych pytaniach na temat Firebase.
Limity w Google Cloud Functions obejmują 3 obszary:
Limity zasobów
Mają wpływ na łączną ilość zasobów, które mogą zużywać funkcje.
Limity czasu
Wpływają one na czas trwania transmisji.
Limity szybkości
Ma to wpływ na szybkość, z jaką możesz wywoływać interfejs Cloud Functions API w celu zarządzania funkcjami.
Różne typy limitów zostały szczegółowo opisane poniżej. W stosownych przypadkach podane są różnice między limitami w Cloud Functions (1 generacji) i Cloud Functions (2 generacji).
Limity zasobów
Limity zasobów wpływają na łączną ilość zasobów, które mogą zużywać funkcje. Zakres regionalny jest przypisany do konkretnego 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 wdrożenia z jedną funkcją | 100 MB (skompresowane) w przypadku źródeł. 500 MB (bez kompresji) na źródła i moduły. |
Nie dotyczy | Nie | na funkcję |
Maksymalny rozmiar nieskompresowanego żądania HTTP | Dane wysyłane do funkcji HTTP w żądaniu HTTP | 10 MB | 32MB | Nie | na wywołanie |
Maksymalny rozmiar nieskompresowanej odpowiedzi HTTP | Dane wysyłane z funkcji HTTP w odpowiedzi HTTP | 10 MB | 10 MB na potrzeby strumieniowego przesyłania odpowiedzi. 32 MB na odpowiedzi niestrumieniowe. |
Nie | na wywołanie |
Maksymalny rozmiar zdarzenia dla funkcji opartych na zdarzeniach | Dane wysyłane w zdarzeniach do funkcji w tle | 10 MB | 512 KB w przypadku zdarzeń Eventarc. 10 MB w przypadku starszych zdarzeń. |
Nie | na zdarzenie |
Maksymalna ilość pamięci funkcji | Ilość pamięci, której może używać każda instancja funkcji | 8GiB | 32GiB | Nie | na funkcję |
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 wymuszonym zakończeniem | 540 sekund | 60 minut na funkcje HTTP. 9 minut na funkcje oparte na zdarzeniach. |
Nie | na wywołanie |
Limity szybkości
Limit | Opis | Limit (1 generacji) | Limit (2 generacji) | Można zwiększyć | Zakres |
---|---|---|---|---|---|
Wywołania interfejsu API (READ) | Wywołania do opisania lub wyświetlania listy funkcji za pomocą interfejsu Cloud Functions API | 5000 na 100 sekund | 1200 na 60 sekund | Tylko 1 generacja | na projekt (1 generacji) na region (2 generacji) |
Wywołania interfejsu API (WRITE) | Wywołania wdrażania lub usuwania funkcji za pomocą interfejsu Cloud Functions API | 80 na 100 sekund | 60 na 60 sekund | Nie 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 | Nie 2 | na projekt |
Skalowalność
Funkcje w Cloud Functions wywoływane przez HTTP skalują się szybko w górę w celu obsługi ruchu przychodzącego, podczas gdy funkcje w tle skalują się stopniowo. Zdolność funkcji do skalowania w górę zależy od kilku czynników, m.in.:
- Czas potrzebny na wykonanie funkcji (krótkie funkcje zwykle skalują się w górę, by obsłużyć więcej żądań równoczesnych).
- Czas potrzebny na zainicjowanie funkcji przy uruchomieniu „na zimno”.
- Odsetek błędów Twojej funkcji.
Czynniki przejściowe, takie jak obciążenie regionalne i pojemność centrów danych.
Dodatkowe limity funkcji w tle
Limit | Opis | Limit | Można zwiększyć | Zakres | Wersja usługi |
---|---|---|---|---|---|
Maksymalna liczba jednoczesnych wywołań | Maksymalna liczba jednoczesnych wywołań jednej funkcji Przykład: jeśli obsługa każdego zdarzenia trwa 100 sekund, częstotliwość wywołań będzie ograniczona do 30 na sekundę |
3000 | Tak | na funkcję | Tylko 1 generacja |
Maksymalny współczynnik wywołań | Maksymalna częstotliwość zdarzeń obsługiwanych przez 1 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ównocześnie obsługiwanych będzie średnio 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ń jednej funkcji Przykład: jeśli zdarzenia mają rozmiar 1 MB, a ich przetwarzanie trwa 10 sekund, średnia częstotliwość będzie 1 zdarzenie na sekundę, ponieważ 11. zdarzenie zostanie przetworzone dopiero po zakończeniu przetwarzania jednego z 10 pierwszych zdarzeń |
10 MB | Nie | na funkcję | 1 generacji i 2 generacji |
Maksymalna przepustowość zdarzeń przychodzących | Maksymalna przepustowość zdarzeń przychodzących do jednej 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 zakończą się w ciągu 100 ms |
10 MB na sekundę | Nie | na funkcję | 1 generacji i 2 generacji |
Po osiągnięciu limitu
Gdy funkcja wykorzystuje cały przydzielony zasób, staje się on niedostępny do czasu odświeżenia lub zwiększenia limitu. Może to oznaczać, że do tego czasu Twoja funkcja i pozostałe funkcje tego samego projektu nie będą działać. Funkcja zwraca kod błędu HTTP 500, gdy jeden z zasobów przekracza limit i nie można wykonać tej funkcji.
Aby zwiększyć limity powyżej wartości domyślnych wymienionych tutaj, otwórz stronę limitów w Cloud Functions, 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 dla wdrożenia interfejsu wiersza poleceń Firebase
Każda funkcja wdrażana przez interfejs wiersza poleceń Firebase ma wpływ na te rodzaje stawek i limitów czasu:
- Wywołania interfejsu API (READ) – 1 wywołanie na wdrożenie, niezależnie od liczby funkcji
- Limit: 5000 na 100 sekund
- Wywołania interfejsu API (WRITE) – 1 wywołanie na funkcję
- Limit: 80 na 100 sekund
Zobacz też dokumentację wiersza poleceń Firebase.