Приложение Rails 3, как измерить устойчивость при высоких нагрузках - PullRequest
6 голосов
/ 22 сентября 2011

Привет, я новый программист, и я работаю над своим первым настоящим приложением, которое я собираюсь запустить в ближайшие недели.Приложение использует некоторые изящные идеи для обмена фотографиями, но в основном это просто веб-приложение для обмена фотографиями.Я хотел бы узнать информацию о том, с каким типом нагрузок может справиться небольшое приложение rails 3, но я не уверен, с чего начать.Нужно ли мне запускать бенчмаркинг-тесты, чтобы определить, сколько запросов он может обработать и как быстро он это делает?Как можно найти статистику, подобную этой, для их приложения?

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

Большое спасибо!

Ответы [ 3 ]

4 голосов
/ 28 сентября 2011

Большой вопрос здесь, где вы развертываете свое приложение:

Я размещаю некоторые из них на экземпляре линоды, используя nginx / unicorn.Это существенно больше работы, но мне это нравится.Я не беспокоюсь о нагрузочном тестировании, но иногда я сильно ударяю по домашним страницам с помощью Siege (вы можете установить его с помощью homebrew, brew install siege), чтобы понять, с чем я работаю.

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

Можете ли выдайте нам больше информации о выборе хостинга?

1 голос
/ 04 октября 2011

Я еще не пробовал, но слышал о:

http://blitz.io/

Хорошо выглядит и поддерживается Heroku через дополнение

1 голос
/ 04 октября 2011

"какой тип нагрузок может обрабатывать приложение xxxx"

Вы правы. Чтобы ответить на это, мы тестируем!

Без тестирования мы не можем просто сказать что-то столь же широкое, как наше приложение ruby, работающее на 2 динамах из heroku, способное обрабатывать 100 запросов в секунду или 100 одновременных пользователей. Нам нужно проверить. Масштабирование также может быть сложным делом. Без тестирования мы не будем знать, какие компоненты хорошо масштабируются, а какие нет.

Для начала у нас есть приложение, тестируемая система. Мы уже работаем с Heroku, что дает нам немедленный доступ к дополнению New Relic . Мы могли бы попробовать включить бесплатную версию New Relic, чтобы увидеть, какую информацию она нам предоставляет. Есть платная версия, которую мы могли бы также попробовать во время наших «сессий настройки», если нам нужно погрузиться дальше.

Тогда нам просто не хватает «драйвера», процесса, который будет загружать приложение, используя самые распространенные процессы (загрузка изображений, просмотр изображений, вход в систему и т. Д.).

Чтобы начать, нам просто нужно, чтобы 1-N наших ближайших друзей согласились выступать в качестве пользователей на нашем сайте, в то время как мы отслеживаем все действия из New Relic. Измерение времени отклика для пользовательского опыта, выявление медленных запросов, посмотрите, где наше приложение тратит свое время.

Когда мы устали покупать нашим друзьям все пиво за то, что помогли нам, мы можем взглянуть на автоматизацию некоторых из этих обычных бизнес-потоков с помощью инструмента нагрузочного тестирования. Есть коммерческие: Mercury LoadRunner, Borland SilkPerformer и Microsoft Team Test.

Мы также можем проявить творческий подход, используя инструменты функционального тестирования, такие как Watir или Selenium, или даже надежный wget или curl, чтобы увеличить нагрузку.

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

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

отказ от ответственности: у меня никогда не было рабочего приложения на Rails, но если бы я это сделал, я бы использовал New Relic для его мониторинга. По крайней мере, для начала, тем более что мы уже на Heroku.

...