Каковы правильные настройки Cloudwatch/Autoscale для чрезвычайно коротких всплесков трафика в Amazon Web Services?

У меня есть сайт, работающий на Amazon Elastic Beanstalk со следующей схемой трафика:

  • ~ 50 одновременных пользователей обычно.
  • ~ 2000 одновременных пользователей в течение 1/2 минуты, когда пост размещается на странице Facebook.

Веб-службы Amazon утверждают, что могут быстро масштабироваться для решения подобных задач, но настройка cloudwatch «Больше, чем x в течение более 1 минуты» кажется недостаточно быстрой для этой модели трафика?

Обычно в течение нескольких секунд происходит сбой всех экземпляров ec2, что приводит к уничтожению всех метрик cloudwatch, и весь сайт не работает в течение 4-6 минут. Пока я еще не нашел конфигурацию, которая работает для этого senario.

Вот график небольшого события, которое также убило сайт: введите здесь описание изображения


comment
На графике показан тест осады 200 последовательных пользователей в течение 2 минут. Это типичная длина, но она составляет ~20% от объема трафика при размещении ссылки.   -  person Ben    schedule 22.06.2012
comment
Если вы масштабируете, с вас будет взиматься плата за целый час. Даже если бы можно было быстро масштабироваться (используя готовый к обслуживанию ami), свернуть кучу серверов по запросу, чтобы отключить их через десять минут, — это дорогой маневр.   -  person theist    schedule 28.11.2013


Ответы (2)


Эти ссылки размещены предсказуемо? Если это так, вы можете использовать масштабирование по расписанию или, в качестве альтернативы, может изменить значение DESIRED-CAPACITY группы автоматического масштабирования или даже вызвать as-execute-policy для масштабирования прямо перед публикацией вашей ссылки.

Знаете ли вы, что в одной группе может быть несколько политик масштабирования? Таким образом, у вас может быть специальная политика автоматического масштабирования для вашего случая, что-то вроде SCALE_OUT_HIGH, которая добавляет, скажем, еще 10 экземпляров одновременно. Взгляните на команду as-put-scaling-policy.

Кроме того, вам нужно проверить свой код и найти узкие места.

Какой HTTPD вы используете? Подумайте о переходе на Nginx, так как это гораздо более быстрое и менее ресурсоемкое программное обеспечение, чем Apache. Попробуйте использовать Memcache... NoSQL, такой как Redis, для высокого чтения и записи также является хорошим вариантом.

person Roman Newaza    schedule 26.06.2012

Предложение от AWS было следующим:

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

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

Другой подход может состоять в том, чтобы настроить ваш сигнал тревоги, чтобы использовать пороговое значение или показатель, который будет отражать (или предсказывать) ваш рост спроса раньше. Например, вы можете повысить производительность, если настроите будильник на добавление экземпляров после того, как количество пользователей превысит 75 или 100. Возможно, вы уже делаете это. Кроме того, ваш вариант использования может иметь другой индикатор, предсказывающий увеличение спроса, например, публикация на вашей странице в Facebook может предшествовать значительному увеличению запроса на несколько секунд или даже на минуту. Потенциальным решением также может быть использование пользовательских метрик CloudWatch для отслеживания этого значения, а затем установка для него автоматического масштабирования.

Поэтому я думаю, что лучший ответ — запускать больше экземпляров при меньшем трафике и использовать пользовательские метрики для прогнозирования трафика из внешнего источника. Я собираюсь попробовать, например, отслеживать Facebook и Twitter на наличие сообщений со ссылками на сайт и сразу же увеличивать масштабы.

person Ben    schedule 26.06.2012