Наша цель — всегда доставлять каждое сообщение, отправленное через FCM. Однако доставка каждого сообщения иногда приводит к ухудшению общего пользовательского опыта. В других случаях нам необходимо установить ограничения, чтобы FCM предоставлял масштабируемый сервис для всех отправителей. Типы ограничений и квот, описанные в этом разделе, помогают нам сбалансировать эти важные факторы.
Регулирование нисходящих сообщений
В API HTTP v1 введены поминутные квоты на отправку сообщений по каждому проекту. Квота по умолчанию в 600 тыс. сообщений в минуту охватывает более 99% разработчиков FCM , обеспечивая при этом стабильность системы и минимизируя влияние нестабильных проектов.
Резкие колебания трафика могут привести к ошибкам превышения квоты. В случае превышения квоты система выдаёт HTTP-код статуса 429 (QUOTA_EXCEEDED) до тех пор, пока квота не будет заполнена в течение следующей минуты. Ответы 429 также могут возвращаться в ситуациях перегрузки, поэтому настоятельно рекомендуется обрабатывать ошибки 429 в соответствии с опубликованными рекомендациями .
Обратите внимание, что:
- Квота нисходящего потока измеряет сообщения, а не запросы.
- Ошибки клиента (коды статуса HTTP 400-499) подсчитываются (исключая 429).
- Квоты поминутные, но эти минуты не привязаны к часам.
Квота мониторинга
Вы можете просмотреть квоту, использование и ошибки в Google Cloud Console:
- Перейдите в консоль Google Cloud
- Выберите API и сервисы
- В списке таблиц выберите Firebase Cloud Messaging API .
- Выберите КВОТА И СИСТЕМНЫЕ ОГРАНИЧЕНИЯ .
ПРИМЕЧАНИЕ: эти графики не точно соответствуют минутам квоты, то есть сообщения 429 могут обслуживаться, когда трафик оказывается ниже квоты.
Запросить увеличение квоты
Прежде чем подавать запрос на увеличение квоты, убедитесь, что:
- Ваше использование регулярно составляет ≥ 80% от квоты в течение не менее 5 последовательных минут в день.
- Коэффициент ошибок клиентов составляет < 5%, особенно в периоды пиковой нагрузки.
- Вы придерживаетесь лучших практик широкомасштабной рассылки сообщений .
Если вы соответствуете этим критериям, вы можете подать запрос на увеличение квоты до +25%, и FCM приложит все возможные усилия для выполнения запроса (увеличение квоты не может быть гарантировано).
Если вам требуется дополнительная квота на отправку сообщений в нисходящем направлении в связи с предстоящим запуском или временным событием, запросите квоту не менее чем за 15 дней, чтобы у вас было достаточно времени для обработки запроса. Для больших запросов (>18 млн сообщений в минуту) требуется уведомление не менее чем за 30 дней. Запуски и запросы на специальные события по-прежнему подчиняются требованиям к уровню ошибок клиента и передовым практикам.
См. также часто задаваемые вопросы о квотах FCM .
Лимит сообщений в теме
Скорость добавления или удаления подписки на тему ограничена 3000 QPS на проект.
Скорость отправки сообщений можно узнать в разделе Регулирование распределения сообщений .
Регулирование разветвления
Рассылка сообщений — это процесс отправки сообщения на несколько устройств, например, когда вы ориентируетесь на темы и группы или когда вы используете компоновщик уведомлений для таргетинга аудиторий или сегментов пользователей.
Рассылка сообщений не происходит мгновенно, поэтому иногда может происходить несколько рассылок одновременно. Мы ограничиваем количество одновременных рассылок сообщений в рамках проекта до 1000. После этого мы можем отклонить дополнительные запросы на рассылку или отложить рассылку до завершения некоторых из уже запущенных рассылок.
Фактически достижимая скорость разветвления зависит от количества проектов, одновременно запрашивающих разветвления. Скорость разветвления 10 000 запросов в секунду для отдельного проекта встречается нередко, но это значение не гарантировано и зависит от общей нагрузки на систему. Важно отметить, что доступная мощность разветвления распределяется между проектами, а не между запросами разветвления. Таким образом, если в вашем проекте выполняются два разветвления, то для каждого разветвления будет использоваться только половина доступной скорости разветвления. Рекомендуемый способ максимизировать скорость разветвления — поддерживать только один активный разветвитель одновременно.
Сворачиваемое ограничение сообщений
Как описано в разделе «Сворачиваемые сообщения» , сворачиваемые сообщения — это уведомления без содержания, которые сворачиваются друг на друга. Если разработчик слишком часто отправляет одно и то же сообщение приложению, мы задерживаем (регулируем) отправку сообщений, чтобы снизить нагрузку на аккумулятор пользователя.
Например, если вы отправляете большое количество новых запросов на синхронизацию электронной почты на одно устройство, мы можем отложить следующий запрос на синхронизацию на несколько минут, чтобы устройство могло синхронизироваться с более низкой средней скоростью. Такое ограничение применяется исключительно для минимизации воздействия на аккумулятор пользователя.
Если ваш сценарий использования требует частой отправки, то неразворачиваемые сообщения могут быть правильным выбором. В таких сообщениях обязательно включайте контент, чтобы снизить расход заряда батареи.
Мы ограничиваем сворачиваемые сообщения пакетом в 20 сообщений на приложение на одно устройство с пополнением на 1 сообщение каждые 3 минуты.
Максимальная скорость отправки сообщений на одно устройство
На Android можно отправлять до 240 сообщений в минуту и до 5000 сообщений в час на одно устройство. Этот высокий порог предназначен для кратковременных всплесков трафика, например, при быстром общении пользователей в чате. Это ограничение предотвращает непреднамеренную разрядку аккумулятора устройства из-за ошибок в логике отправки.
Для iOS мы возвращаем ошибку, если скорость превышает ограничения APN.