Лучшие практики обработки и запроса увеличения лимитов сервисов AWS

Отслеживайте квоты сервисов AWS, планируйте емкость заранее и отправляйте четкие запросы на увеличение квот до того, как троттлинг повлияет на производство.

Лучшие практики обработки и запроса увеличения лимитов сервисов AWS

Квоты сервисов AWS защищают сервисы от неконтролируемого использования, но они также могут остановить ваш план масштабирования в самый неподходящий момент. Если ваша команда не следит за квотами перед запуском или всплеском трафика, вы можете столкнуться с троттлингом, неудачными развертываниями или ошибками емкости, даже если код вашего приложения исправен.

Используйте консоль Service Quotas, CloudWatch и четкое бизнес-обоснование для управления лимитами как частью обычного планирования емкости.

Понимание квот сервисов AWS

Прежде чем инициировать какие-либо запросы, важно понять природу лимитов AWS. Эти лимиты обычно классифицируются на основе ресурсов (например, количество экземпляров EC2), пропускной способности (например, IOPS) или запросов API в секунду (RPS).

Мягкие лимиты против жестких лимитов

Большинство квот относятся к одной из двух категорий:

  • Мягкие лимиты (Регулируемые квоты): Это подавляющее большинство квот. Это значения по умолчанию, которые AWS устанавливает для новых учетных записей, и их обычно можно увеличить, отправив запрос в службу поддержки AWS при наличии достаточного бизнес-обоснования.
  • Жесткие лимиты (Нерегулируемые квоты): Эти лимиты продиктованы дизайном сервиса, требованиями безопасности или ограничениями инфраструктуры. Их обычно нельзя увеличить, поэтому вам понадобится архитектурный обходной путь.

Совет: Всегда сначала проверяйте консоль AWS Service Quotas. Лимиты, перечисленные там, обычно являются мягкими, и это предпочтительный способ отправки запросов.

Распространенные лимиты, требующие внимания

В высокомасштабируемых средах следующие лимиты часто достигаются первыми, и за ними следует внимательно следить:

  1. Количество экземпляров EC2 по требованию: Общее количество vCPU, работающих во всех типах экземпляров EC2 в регионе.
  2. Количество/размер томов EBS: Лимиты на общее количество или совокупный размер подключенных томов.
  3. Ресурсы VPC: Лимиты на количество VPC, интернет-шлюзов, NAT-шлюзов и эластичных IP-адресов (EIP).
  4. Лимиты троттлинга API: Лимиты запросов в секунду (RPS) для таких сервисов, как S3, DynamoDB или частота вызовов Lambda.

Упреждающий мониторинг и прогнозирование

Реагирование на троттлинг дорого и разрушительно. Цель состоит в том, чтобы упреждающе предвидеть нарушения лимитов задолго до того, как они повлияют на производство.

1. Использование консоли Service Quotas

Консоль AWS Service Quotas является единственным авторитетным источником для просмотра текущих квот и отслеживания использования во многих сервисах. Она заменяет необходимость проверять лимиты в различных консолях сервисов.

Действие: Регулярно проверяйте квоты для сервисов, критически важных для вашего приложения, таких как Lambda, EC2, RDS, VPC и DynamoDB. Расследуйте любую квоту, которая неуклонно растет или уже близка к вашему порогу оповещения.

2. Внедрение оповещений CloudWatch

Для критических лимитов настройте автоматические оповещения, которые уведомляют вашу команду, когда использование приближается к опасному порогу.

Многие метрики ресурсов (например, использование vCPU EC2, параллелизм Lambda) публикуются в CloudWatch. Для квот, которые напрямую интегрированы с Service Quotas, вы можете создавать оповещения непосредственно из консоли Quotas, обычно устанавливая их на 80% использования.

# Пример: Установка оповещения об использовании 80% для параллельных выполнений Lambda
# (Часто настраивается через интеграцию консоли Service Quotas или CloudFormation)

AlarmName: LambdaConcurrencyWarning
MetricName: ConcurrentExecutions
Namespace: AWS/Lambda
Statistic: Maximum
Period: 300
Threshold: [Текущий лимит * 0.80] 
ComparisonOperator: GreaterThanThreshold
EvaluationPeriods: 2
TreatMissingData: notBreaching

3. Прогнозирование и планирование

Согласуйте управление квотами с этапами разработки и маркетинговыми кампаниями. Если запланировано крупное событие масштабирования или запуск продукта, рассчитайте максимально необходимую емкость и отправьте запрос на увеличение заблаговременно. Некоторые запросы выполняются быстро; другие требуют проверки человеком или дополнительного обоснования.

Эффективная процедура запроса увеличения лимита сервиса

AWS предпочитает, чтобы запросы на увеличение лимита отправлялись через консоль Service Quotas, так как это автоматизирует маршрутизацию и ускоряет процесс утверждения.

Шаг 1: Отправка через консоль Service Quotas (рекомендуется)

  1. Перейдите в консоль AWS Service Quotas.
  2. Найдите конкретный сервис (например, 'Amazon EC2').
  3. Нажмите на соответствующую квоту (например, 'Running On-Demand All Standard Instances').
  4. Нажмите кнопку Request increase.
  5. Укажите новый желаемый лимит и регион.
  6. Предоставьте подробное обоснование (см. Шаг 3).

Если квота не указана в консоли Service Quotas, вы должны отправить запрос через традиционный AWS Support Center с типом обращения 'Service Limit Increase'.

Шаг 2: Ключевая информация для включения в запрос

Чтобы предотвратить повторные обращения в службу поддержки AWS, убедитесь, что ваш запрос является исчерпывающим:

  • Регион AWS: Укажите точный регион (например, us-east-1), где требуется увеличение.
  • Конкретное название лимита: Укажите точное название квоты (например, количество запущенных задач Fargate).
  • Текущий лимит: (Необязательно, но полезно) Подтвердите существующий лимит, который вы достигаете.
  • Запрашиваемый новый лимит: Укажите точное конечное число, которое вам требуется (например, увеличение с 100 до 500).
  • Бизнес-обоснование: Это самый важный элемент.

Шаг 3: Создание убедительного бизнес-обоснования

Инженеры AWS требуют конкретных доказательств того, что запрашиваемый лимит необходим, устойчив и точен. Расплывчатые запросы часто задерживаются или отклоняются.

Не используйте: "Нам нужно больше ресурсов для тестирования." Используйте: "Нам требуется 500 дополнительных vCPU, всего 750, в eu-west-1 для поддержки новой рабочей нагрузки ECS Fargate. Нагрузочное тестирование показывает пиковый спрос в 100 параллельных задач во время трафика запуска. Нам нужна емкость до запланированного окна выпуска."

Компонент обоснования Пример детализации
Вариант использования Запуск нового приложения, подключение клиента, сезонная акция, миграция базы данных.
Основание для расчета Результаты нагрузочного тестирования, прогнозируемый рост трафика (RPS), количество пользователей, требования к параллелизму.
Сроки Когда требуется емкость (например, Емкость должна быть работоспособна к 2024-11-01).
Продолжительность Это постоянное увеличение или временный всплеск?

Продвинутые лучшие практики и обработка отказа

Архитектурные стратегии для избежания лимитов

Иногда увеличение лимита является правильным подходом, но часто узкое место указывает на архитектурную неэффективность. Рассмотрите эти методы смягчения последствий, прежде чем запрашивать чрезвычайно большие увеличения:

  1. Внедрите экспоненциальную задержку и джиттер: Используйте этот шаблон для повторных попыток неудачных вызовов API (особенно актуально для лимитов S3 или DynamoDB), чтобы предотвратить перегрузку сервиса и минимизировать влияние троттлинга.
  2. Оптимизируйте пакетную обработку: Объединяйте несколько отдельных вызовов API в одну пакетную операцию, где это поддерживается (например, DynamoDB BatchWriteItem).
  3. Используйте кэширование: Внедрите ElastiCache или CloudFront, чтобы уменьшить количество запросов, попадающих в серверные сервисы, снижая вероятность достижения лимитов RPS.

Обработка отклоненных запросов

Если AWS отклоняет или значительно снижает ваш запрошенный лимит, это обычно означает, что обоснование было недостаточным или запрос превысил параметры безопасности.

План действий при отклонении:

  • Не отправляйте повторно сразу. Изучите причину отказа, предоставленную службой поддержки AWS.
  • Уточните обоснование: Предоставьте более конкретные точки данных, внутренние метрики и более четкую методологию расчета.
  • Свяжитесь со службой поддержки напрямую: Если проблема срочная или сложная, ответьте на обращение в службу поддержки с просьбой объяснить и предложите назначить звонок для проверки архитектурных требований.

Проверка после увеличения

После увеличения лимита обновите свои оповещения CloudWatch, чтобы отразить новый порог в 80%. Простое получение увеличения не является концом; непрерывный мониторинг гарантирует, что вы не столкнетесь с новым лимитом неожиданно в будущем.

Вывод

Управление квотами является частью планирования производственной емкости. Отслеживайте квоты, от которых зависит ваша архитектура, предупреждайте до того, как у вас закончится место, и запрашивайте увеличения с теми же доказательствами, которые вы бы использовали при проверке масштабирования: текущее использование, ожидаемый пик, регион, сроки и то, как вы рассчитали число.