На этой странице подробно описаны масштабируемые ограничения на использование Cloud Functions в соответствии с тарифным планом Blaze с оплатой по мере использования. Эти ограничения применяются к проектам Firebase, которые развертывают функции в среде выполнения Node.js 10.
Тарифный план Blaze предоставляет значительное количество бесплатных вызовов, вычислительного времени и интернет-трафика. Однако развертывание функций влечет за собой небольшую плату за пространство для хранения, используемое для контейнера функции. Дополнительную информацию см. в разделе часто задаваемых вопросов Firebase.
Квоты для Firebase охватывают 4 области:
Ограничения ресурсов
Это влияет на общий объем ресурсов, которые могут потреблять ваши функции.
Ограничения по времени
Это влияет на продолжительность работы системы.
Ограничения скорости
Эти факторы влияют на скорость вызова API Firebase для управления вашими функциями.
Ограничения сети
Это влияет на ограничения исходящих соединений и экземпляров.
Различные типы ограничений описаны более подробно ниже. Различия между ограничениями для Firebase (1-го поколения) и Firebase (2-го поколения) указаны там, где это применимо.
Ограничения ресурсов
Ограничения на ресурсы влияют на общий объем ресурсов, которые могут потреблять ваши функции. Региональный охват устанавливается для каждого проекта, и каждый проект имеет свои собственные ограничения.
| Квота | Описание | Лимит (1-е поколение) | Лимит (2-е поколение) | Может быть увеличен | Объем |
|---|---|---|---|---|---|
| Количество функций | Общее количество функций, которые могут быть развернуты в каждом регионе. | 1000 | 1000 минус количество развернутых сервисов Cloud Run | Нет | по регионам |
| Максимальный размер развертывания | Максимальный размер развертывания одной функции. | Исходные файлы занимают 100 МБ (в сжатом виде). 500 МБ (в несжатом виде) для исходных файлов и модулей. | Н/Д | Нет | по функциям |
| Максимальный размер несжатого HTTP-запроса | Данные, отправляемые в HTTP-функции в HTTP-запросе. | 10 МБ | 32 МБ | Нет | за вызов |
| Максимальный размер несжатого HTTP-ответа | Данные, отправляемые из HTTP-функций в HTTP-ответе. | 10 МБ | 10 МБ для потоковой передачи ответов. 32 МБ для ответов, не являющихся потоковой передачей. | Нет | за вызов |
| Максимальный размер события для функций, управляемых событиями. | Данные, передаваемые в фоновых функциях в рамках событий. | 10 МБ | 512 КБ для событий Eventarc. 10 МБ для устаревших событий. | Нет | за мероприятие |
| Максимальная память функций | Объем памяти, который может использовать каждый экземпляр функции. | 8 ГБ | 32 ГБ | Нет | по функциям |
| Максимальный объем памяти проекта | Объем памяти, в байтах, который может использовать проект. Он измеряется как общая сумма запрошенной пользователем памяти по всем экземплярам функций за 1 минуту. | Зависит от выбранного региона. Этот лимит может быть выше в регионах с высокой пропускной способностью или ниже в недавно открытых регионах. | Н/Д | Да | по проекту и региону |
| Проект Max CPU | Объем ресурсов ЦП (в милли-vCPU), который может использовать проект. Он измеряется суммой запрошенных пользователем ресурсов ЦП по всем экземплярам функций за 1 минуту. | Зависит от выбранного региона. Этот лимит может быть выше в регионах с высокой пропускной способностью или ниже в недавно открытых регионах. | Н/Д | Да | по проекту и региону |
Ограничения по времени
| Квота | Описание | Лимит (1-е поколение) | Лимит (2-е поколение) | Может быть увеличен | Объем |
|---|---|---|---|---|---|
| Максимальная продолжительность действия | Максимальное время, в течение которого функция может выполняться до принудительного завершения. | 540 секунд |
| Нет | за вызов |
Ограничения скорости
| Квота | Описание | Лимит (1-е поколение) | Лимит (2-е поколение) | Может быть увеличен | Объем |
|---|---|---|---|---|---|
| Вызовы API (ЧТЕНИЕ) | Вызовы для описания или перечисления функций через API Firebase | 5000 за 100 секунд | 1200 за 60 секунд | Только для первого поколения | по проекту (1-го поколения) по регионам (2-е поколение) |
| Вызовы API (ЗАПИСЬ) | Вызовы для развертывания или удаления функций через API Firebase | 80 за 100 секунд | 60 за 60 секунд | № 1 | по проекту (1-го поколения) по регионам (2-е поколение) |
| Вызовы API (CALL) | Вызовы API "вызова" | 16 за 100 секунд | Н/Д | № 2 | по проекту |
Ограничения сети
Для получения информации об ограничениях на сетевые запросы и пропускную способность Firebase (2-го поколения) см. раздел «Ограничения сети» .
К Firebase (1-го поколения) применяются следующие сетевые ограничения:
- Исходящие соединения в секунду на один экземпляр: 500 (увеличить невозможно)
- Количество исходящих DNS-разрешений в секунду на один экземпляр: 100 (увеличить нельзя)
- Максимальное количество пакетов в секунду на один экземпляр: 80 000
- Максимальное количество бит в секунду на один экземпляр: 100 000 000
Масштабируемость
Firebase , вызываемые по HTTP, быстро масштабируются для обработки входящего трафика, в то время как фоновые функции масштабируются более плавно. Способность функции к масштабированию определяется несколькими факторами, в том числе:
- Время, необходимое для завершения выполнения функции (короткоработающие функции, как правило, могут масштабироваться для обработки большего количества одновременных запросов).
- Время, необходимое для инициализации функции при холодном запуске .
- Частота ошибок вашей функции.
Кратковременные факторы, такие как региональная нагрузка и пропускная способность центров обработки данных.
Дополнительные квоты для фоновых функций
| Квота | Описание | Лимит | Может быть увеличен | Объем | Версия продукта |
|---|---|---|---|---|---|
| Максимальное количество одновременных вызовов | Максимальное количество одновременных вызовов одной функции. Пример: если обработка каждого события занимает 100 секунд, то частота вызовов будет ограничена в среднем 30 в секунду. | 3000 | Да | по функциям | Только для первого поколения |
| Максимальная частота вызовов | Максимальная скорость обработки событий одной функцией. Пример: если обработка события занимает 100 мс, частота вызовов будет ограничена 1000 в секунду, даже если в среднем обрабатывается только 100 запросов параллельно. | 1000 в секунду | Нет | по функциям | Только для первого поколения |
| Максимальный размер данных одновременного события | Максимальный общий размер входящих событий для одновременных вызовов одной функции. Пример: если размер событий составляет 1 МБ, а их обработка занимает 10 секунд, то средняя скорость обработки составит 1 событие в секунду, поскольку 11-е событие не будет обработано до тех пор, пока не завершится обработка одного из первых 10 событий. | 10 МБ | Нет | по функциям | 1-го и 2-го поколений |
| Максимальная пропускная способность входящих событий | Максимальная пропускная способность входящих событий для одной функции. Пример: если размер событий составляет 1 МБ, то частота вызовов может достигать максимум 10 в секунду, даже если функции завершаются в течение 100 мс. | 10 МБ в секунду | Нет | по функциям | 1-го и 2-го поколений |
Когда вы достигаете лимита квоты
Когда функция использует весь выделенный ресурс, ресурс становится недоступным до тех пор, пока квота не будет обновлена или увеличена. Это может означать, что ваша функция и все остальные функции в том же проекте не будут работать до этого момента. Функция возвращает код ошибки HTTP 500, когда один из ресурсов превышает квоту, и функция не может быть выполнена.
Чтобы увеличить квоты сверх значений по умолчанию, указанных здесь, перейдите на страницу «Квоты Firebase , выберите квоты, которые хотите изменить, нажмите «Редактировать квоты» , укажите информацию о пользователе, если потребуется, и введите новый лимит квоты для каждой выбранной квоты.
Ограничения квот для развертывания Firebase CLI
Для каждой функции, развертываемой с помощью Firebase CLI, изменяются следующие ограничения по скорости и времени:
- Вызовы API (ЧТЕНИЕ) — 1 вызов на развертывание, независимо от количества функций.
- Лимит: 5000 за 100 секунд
- Вызовы API (запись) - 1 вызов на функцию
- Лимит: 80 за 100 секунд
См. также справочник по Firebase CLI .