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

Оценка нагрузки для приложения ASP.Net / SQL Server

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

У меня есть следующие источники входных данных для параметрической оценки:

По результатам тестирования я получаю: - объем трафика - количество запросов SQL

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

Есть ли какое-то практическое правило, которое я могу применить к этим параметрам?

Вы должны учитывать огромное количество переменных, поэтому сделать это непросто. Несколько вещей, которые вы захотите рассмотреть (в дополнение к отличным заметкам Брента Озара):

  • Насколько велик ваш набор данных? Каковы ваши ожидаемые темпы роста и характер?
  • Как эти услуги будут разделены? Раздельные веб-серверы и sql-серверы? Может ли ваше приложение масштабироваться до каждой фермы?
  • Большая часть работы выполняется вашим приложением в веб-интерфейсе или с помощью SQL-запросов?

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

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

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

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

  • Запросы - например, если вы используете курсоры, вам потребуется больше мощности, чем при использовании операций на основе наборов. Достаточно одного плохо спроектированного запроса, чтобы поставить сервер на колени.
  • Индексы - хороший администратор баз данных может иметь значение, будет ли приложение работать быстро или медленно.
  • Количество исторических данных - поскольку ваше приложение не работает в течение более длительных периодов времени, может храниться больше данных, что влияет на то, как быстро SQL Server может вернуть результаты вашего запроса. Если ваше приложение быстро очищает историю, это даже лучше.
  • Аппаратные настройки - например, правильно настроенная сеть SAN может выдержать гораздо большую нагрузку, чем неправильно настроенная сеть SAN.

Существуют школы мысли о том, как выполнять планирование мощности, но это намного сложнее, чем несколько формул.

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

Я слышал, что около 75 одновременных пользователей на 1 ГБ ОЗУ и одноядерный процессор на веб-сервере - это безопасная оценка. Таким образом, ваш типичный четырехъядерный сервер объемом 8 ГБ должен обрабатывать большое количество пользователей. Если вы дойдете до этого момента, пропускная способность также может начать играть роль в вашей нагрузке.

У меня нет большого опыта работы с SQL Server, но я могу предположить, что применимы аналогичные числа.

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

Обязательно проведите нагрузочные тесты, ориентированные на 1,5–2-кратную нагрузку, ожидаемую вашими проектными группами. Если вы справитесь с этой нагрузкой успешно, я бы продолжал увеличивать нагрузку, чтобы вы знали, каков предел прочности.

Какие у вас платформы web / db?

Если вы используете IIS и SQL Server, Microsoft предлагает несколько инструментов для стресс-тестирования / тестирования производительности ваших веб-сайтов. Инструменты IIS

Эта статья кажется хорошим началом для тестирования SQL Server.