Как можно автоматически масштабировать веб-динамо на Heroku? - PullRequest
21 голосов
/ 07 февраля 2012

С Heroku, как один AUTO масштабируется с точки зрения веб-динамо, когда это необходимо? Скажем, мы получаем приток 100 одновременных пользователей каждые 2-3 минуты. Если наше приложение застряло на 5-6 веб-динамиях. Мы облажались.

Во-вторых, я не смог бы контролировать трафик в течение 24 часов, чтобы определить, требуется ли увеличение или уменьшение масштаба.

Пока что я видел http://hirefireapp.com/ и http://www.heroscale.com/ Любые предложения по поводу этих двух?

Ответы [ 6 ]

25 голосов
/ 07 февраля 2012

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

Например, представьте свой сценарий выше, вы внезапно начинаете видеть формирование очереди и хотите нарастить динозавры. Вы провернули еще десять. Тем не менее, это не проблема dyno, ваша база данных работает медленно, так что теперь у вас есть больше dynos, которые сидели в ожидании базы данных, которая теперь требует еще больше.

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

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

24 голосов
/ 25 июля 2013

Я построил HireFire и хотел бы поделиться некоторой актуальной информацией:

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

  • HireFire (Response Time) |Web Dynos
  • HireFire (Job Queue) |Рабочий Динос
  • Heroku Logplex (Время отклика) |Web Dynos
  • Heroku Logplex (количество запросов в минуту) |Web Dynos
  • Heroku Logplex (загрузка процессора Dyno) |Web Dynos
  • NewRelic (Apdex) |Web Dynos
  • NewRelic (Время отклика) |Web Dynos
  • NewRelic (количество запросов в минуту) |Web Dynos

HireFire (время отклика) выполняет базовый HTTP-запрос для измерения времени отклика.

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

Новая реликвия позволяет интегрироваться с Новой реликвией.Он будет периодически получать обновленные метрические данные, такие как среднее время отклика, количество запросов в минуту и ​​Apdex, чтобы определить формирование веб-динамо.

Heroku Logplex - наше последнее дополнение.Этот подход опирается на ваши (и Heroku) журналы.Ваши журналы будут передаваться из Logplex Heroku в Logdrain HireFire, где он будет анализироваться для метрических данных.Это позволяет вам автоматически масштабировать свои веб-динос более надежным способом, чем с HireFire / ResponseTime, поскольку он получает данные непосредственно с маршрутизатора Heroku.Этот подход также не требует никаких внешних зависимостей, таких как New Relic.

Свяжитесь с нами, если у вас есть какие-либо вопросы!

12 голосов
/ 09 ноября 2018

Многие мои друзья из сообщества Rails используют Rails Autoscale для автоматического масштабирования в Heroku. Вот как это работает:

Rails Autoscale предоставляет крошечное промежуточное программное обеспечение Rack, которое фиксирует это время и периодически сообщает об этом службе Rails Autoscale. Это похоже на то, как New Relic работает на долю меньшего размера.

Автоматическое масштабирование, которое Heroku предоставляет изначально, доступно только на их уровне производительности (который начинается с 250 долларов США в месяц за динамо). Если вы используете планы Hobby или Standard, вам нужно найти стороннее решение.

Одна вещь, которая мне нравится в Rails Autoscale, это то, что она автоматически масштабирует ваше приложение, основываясь на очереди запросов.

Это хорошая функция, особенно для душевного спокойствия. Если вы спите и получаете всплеск трафика, вы не можете вручную отрегулировать количество динамов. Хорошая страховка - иметь инструмент, который может автоматически масштабироваться.

11 голосов
/ 24 апреля 2013

Heroku только что выпустил новый аддон, который выполняет автоматическое масштабирование.Веб-динам только сейчас, хотя.

Проверить эту тему https://stackoverflow.com/a/14075781/484689

3 голосов
/ 15 сентября 2014

Я написал систему автоматического масштабирования Heroku под названием Heroku Vector.Это позволяет вам масштабировать веб и диджеи sidekiq в зависимости от объема получаемого вами трафика (вместо ожидания задержек во времени ответа):

https://github.com/wpeterson/heroku-vector

Вы можете запустить его как стенддинамологический процесс.

0 голосов
/ 01 ноября 2017

По состоянию на январь 2017 года Heroku официально поддерживает автоматическое масштабирование.

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

Вот документы: https://devcenter.heroku.com/articles/scaling#autoscaling

Вот объявление: https://blog.heroku.com/heroku-autoscaling

...