Как решить, на каком оборудовании развернуть веб-приложение - PullRequest
4 голосов
/ 26 апреля 2010

Предположим, у вас есть веб-приложение, без определенного стека (Java / .NET / LAMP / Django / Rails, все хорошо).

Как бы вы решили, на каком оборудовании его развернуть? Какие эмпирические правила существуют при определении того, сколько машин вам нужно?

Как бы вы сформулировали параметры, такие как одновременные пользователи, одновременные подключения, ежедневные обращения и соотношение чтения / записи в БД, к решению о том, какое и какое оборудование вам нужно?

Любые ресурсы по этому вопросу были бы очень полезны ...

Конкретно - любые точные цифры из реального опыта и тематических исследований были бы хорошими.

Ответы [ 3 ]

3 голосов
/ 29 апреля 2010

Планирование мощностей - довольно подробная и обширная область. Вам нужно будет принять итеративную модель с подходом «Теоретическая база> Нагрузочное тестирование> Настройка и оптимизация».

Теория

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

В качестве примера, давайте предположим, что весь пиковый трафик (в худшем случае) будет занимать более 4 часов дня. Поэтому, если веб-сайт ожидает 100 тыс. Посещений в день, мы не делим это на 24 часа, а вместо этого - на 4 часа. Так что мой сайт теперь должен поддерживать пиковый трафик в 25 тыс. Посещений в час.

Это разбивает до 417 ударов в минуту, или 7 ударов в секунду. Это только на переднем конце.

Добавьте к этому количество внутренних транзакций, таких как операции с базой данных, любой файловый ввод / вывод на пользователя, любые пакетные задания, которые могут выполняться в системе, отчеты и т. Д. Подсчитайте все это, чтобы получить количество транзакций в секунду, минуту и ​​т. Д., Которое ваша система должна поддерживать.

Это усложняется, когда у вас есть такие требования, как «Среднее время ответа должно составлять 3 секунды и т. Д.», Что означает, что вы должны указать сетевую задержку / межсетевой экран / прокси и т. Д.

Наконец - когда дело доходит до выбора оборудования, посмотрите опубликованные таблицы данных от каждого производителя, такого как Sun, HP, IBM, Windows и т. Д. В них подробно описывается максимальное количество транзакций в секунду в условиях тестирования. Обычно мы принимаем 50% этих пиков в реальных условиях:)

Но в конечном итоге выбор аппаратного обеспечения обычно является коммерческим решением.

Также для каждого отказоустойчивого кластера необходимо хранить как минимум 2 сервера: web / app / даже db.

нагрузочное тестирование

Рекомендуется иметь отдельную среду эталонного тестирования на протяжении всего жизненного цикла проекта и после запуска, чтобы вы могли вернуться и запустить специальные тесты производительности в приложении. Масштабируйте его, чтобы он был уменьшенной версией производства, поэтому, если в Prod есть 4 сервера, а в Ref - 1, вы проверяете 25% пиковых транзакций и т. Д.

Настройка и оптимизация

Слишком часто люди собирают какое-то дорогое оборудование и ожидают, что все будет прекрасно работать. Вам нужно будет настроить оборудование и ОС для различных параметров, таких как тайм-ауты TCP и т. Д. - они публикуются поставщиками программного обеспечения, и это необходимо сделать после завершения разработки программного обеспечения. Установите эти параметры настройки в Ref env, протестируйте, а затем решите, какие из них вам нужно перенести в Production.

0 голосов
/ 26 апреля 2010

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

Затем получите оценку ожидаемой нагрузки при развертывании (обратитесь к эксперту по домену) (необходимо учитывать среднюю нагрузку И пики).

Умножьте два и добавьте немного, чтобы быть уверенным. Это действительно грубое представление о том, что вам нужно.

Затем реализуйте его, помня, что вы обычно не будете масштабироваться линейно и, вероятно, не получите ожидаемую нагрузку;)

0 голосов
/ 26 апреля 2010

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

Метод проб и ошибок - в значительной степени путь. Это действительно зависит от конкретного приложения и моделей использования.

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