Назад | Перейти на главную страницу

Как объективно измерить нагрузку приложения на сервер

Все,

Я даже не уверен, с чего начать поиск ресурсов, чтобы ответить на мой вопрос, и понимаю, что спекуляции на этот счет очень субъективны.

Мне нужна помощь в определении того, какой класс сервера я должен приобрести для размещения приложения MS Silverlight с серверной частью MSSQL на платформе Windows Server 2008. Это интерактивная программа, поэтому я не могу просто создать список URL-адресов для тестирования и запустить его с 1000 одновременными пользователями.

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

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

На самом деле у меня нет опыта работы с silverlight, но для этого вопроса в целом есть несколько вариантов ОК. Большинство из нас по-прежнему склонно полагаться на метод проб и ошибок + догадка.

LoadRunner - это своего рода дедушка, но если вам нужно спросить, это выходит за рамки вашего бюджета.

В Keynote есть инструмент под названием KITE, который можно загрузить бесплатно. Вы запускаете его, а затем в нем запускаете браузер IE, делаете все, что, по вашему мнению, сделает пользователь, а затем сохраняете записанный сеанс как сценарий. Затем вы можете загрузить этот сценарий в их сеть серверов и заплатить им, чтобы они запустили его быстро. Они также будут стараться заставить вас заплатить им за помощь в написании сценариев. В этом смысле они являются «корпоративными» поставщиками, поэтому для того, чтобы действительно внедрить решение, требуется бюджет.

У Гомеса есть похожий сервис, подробностей я тоже не знаю. Это немного больше ориентировано на полезность, поскольку вы покупаете оптом. Они могут быть дешевле, но, опять же, рассчитаны на «тысячи».

Selenium - это бесплатный инструмент с открытым исходным кодом, который можно использовать аналогично KITE, но вам нужно настроить кластеризацию / клиентов / отчеты. Один из разработчиков также запускает Browser Mob, который в основном будет запускать ваши скрипты selenium на своих серверах загрузки за небольшие деньги.

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

Как я уже сказал заранее, большинство из нас все еще борется. Настройте очень тщательный мониторинг и сбор показателей как можно раньше и отслеживайте тенденции по мере внедрения системы пользователями. Начните разрабатывать приблизительные показатели соотношения для того, сколько пользователей могут быть активны одновременно на ЦП или на ГБ памяти или коррелируют с количеством запросов sql в секунду и т. Д. Это поможет вам спрогнозировать свой пользовательский потенциал, покажет, какие у вас самые большие проблемы, и показывает, когда внезапно какой-то показатель на диаграмме резко увеличивается из-за внесенных вами изменений.

Несмотря на то, что Silverlight является хостом на клиенте, он все равно будет обращаться к вашим серверам для получения данных и, возможно, для выполнения некоторой обработки.

Вместо того, чтобы думать, чем Silverlight отличается от типичного веб-приложения, вы должны подумать о том, чем оно похоже (это действительно так, поскольку многие веб-приложения теперь используют AJAX, который в некоторых случаях отправляет больше запросов на сервер, чем старая веб-форма postbak).

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

Отсюда вы можете начать создавать тестовые сценарии, имитирующие вызовы этих веб-служб.

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