Как я могу сделать планирование емкости своего веб-приложения и определить архитектуру развертывания?
У меня развернуто веб-приложение ASP.net на небольшом экземпляре AWS (Dual Core AMD, 2,60 ГГц, 1,7 ГБ ОЗУ). Я хотел бы выполнить нагрузочное тестирование на этом сервере для 300 одновременно работающих пользователей, а в будущем я хочу разработать предварительную архитектуру планирования и развертывания емкости для 250000 зарегистрированных пользователей для моего приложения.
Я очень новичок в этой области и раньше не проводил никаких нагрузочных испытаний.
Вариант использования и сценарий моего приложения будут такими, как показано ниже:
Сценарий - 250000 зарегистрированных пользователей в базе данных
Параллелизм - 5% - 7% - примерно 17 500
У каждого пользователя есть книжная полка, и предполагается, что каждый пользователь подписан на 10 книг. Каждая книга имеет размер около 25 МБ и 400 страниц.
Случаи применения
Логин пользователя
- Проверка подлинности и авторизация базы данных
Просмотр книжной полки с книжными изображениями
Книжная полка (.swf) - 400 КБ (загружается для каждого пользователя)
Будет загружено 10 изображений книг (по 20 КБ на изображение)(приблизительно)
catalog.xml - 30 КБ / пользователь для выделенного пользователю
Примечание. Приблизительно 650 КБ данных загружаются на клиентский компьютер.
Просмотр книги: при нажатии на изображение книги на клиентский компьютер будут загружены следующие файлы и их размеры.
- Один раз
- Reader.swf - 950 КБ (первая загрузка)
- Данные XML размером примерно 100 КБ / на книгу (по клику)
- Book.xml
- Annotation.xml
- catalog.xml
- Usersettings.xml 40 КБ *4 = 160 КБ на пользователя (.swf)
- Примечание. На клиентский компьютер загружается приблизительно 1200 КБ данных.
Может кто-нибудь подсказать, пожалуйста, как я могу продолжить это?
Большое спасибо заранее, Амар
2 ответа
Достичь первой цели (тестирование 300 пользователей) довольно просто - выберите инструмент нагрузочного тестирования, создайте сценарии и протестируйте. Затем настройте / оптимизируйте и повторите.
Но я думаю, что ваш главный вопрос в том, как подходить к тестированию и планированию на полную мощность - вы говорите, что ~18 тыс. Одновременных пользователей Во-первых, убедитесь, что число (7% от базы пользователей) является максимальным параллелизмом, а не средним. Вам нужно проверить пик.
Таким образом, предполагая, что вы планируете кластер с несколькими серверами с балансировкой нагрузки, чтобы справиться с этой нагрузкой, следующим шагом является определение максимальной емкости одного сервера веб-приложений без балансировщика нагрузки. Это дает вам базовый уровень, который вы можете использовать для оценки производительности кластера. Это действительно важный шаг, и многие наши клиенты пропускают этот шаг в ущерб себе. Это важно, потому что существует много условий, при которых система с балансировкой нагрузки не масштабируется линейно с количеством серверов в кластере. В идеале так и должно быть, и хорошие системы довольно близки. Вы будете удивлены, как часто мы видим системы, которые плохо масштабируются вообще. Мы даже видели несколько систем, которые на самом деле имеют меньшую емкость в качестве кластера, чем отдельный сервер, который мог бы справиться самостоятельно.
После того, как вы установили этот базовый уровень, вы можете сделать предварительную оценку общего количества серверов, которые вам понадобятся, и вы сможете построить свой кластер. Я рекомендую следующее тестирование с 2 веб-серверами / серверами приложений. Это должно почти удвоить ваши возможности. Если этого не произойдет, вам нужно определить причину, прежде чем переходить к более крупным тестам. Вероятными кандидатами являются установка балансировки нагрузки или база данных (если один сервер баз данных обслуживает все серверы веб / приложений). Иногда что-то более фундаментальное для архитектуры приложения находится в игре.
Когда вы убедитесь, что масштабирование от 1 до 2 серверов выполняется оптимально, вы можете перейти к полной кластеризации и протестировать максимальную емкость. Будьте готовы отступить, если не видите ожидаемой масштабируемости - проведите тестирование с 3, 4, 5 серверами и т. Д.
Надеюсь, это поможет! Удачи:>
Эта ссылка: http://support.microsoft.com/kb/231282, содержит ссылки на некоторые инструменты для стресс-тестирования вашего сайта.
Это, безусловно, сложная область, поэтому у вас может быть 2,5 миллиона зарегистрированных пользователей (неужели так много?), Но сколько из них одновременно и какие области веб-сайта они будут использовать. Все эти вещи (и многие другие) будут влиять на планирование загрузки вашей системы.