Хобрук: Ваш путь к мастерству в программировании

Проблемы с производительностью IIS 7 для запросов статических страниц

Мне нужна помощь в увеличении производительности веб-сервера IIS. Мои простые тесты показывают, что я не могу увеличить время отклика даже для обслуживания статических HTML-страниц.

Детали, как показано ниже:

У меня есть статическая HTML-страница размером около 20 КБ, которую обслуживает IIS 7 с настройками по умолчанию. Я выполняю нагрузочный тест на этой статической странице с помощью Microsoft VSTS 2008 Test Suite.

Ниже приведены конфигурации нагрузочного теста:

  1. Постоянная нагрузка 5000 пользователей
  2. Продолжительность нагрузочного теста 5 минут
  3. Процент новых пользователей: 100 (для того, чтобы рассматривать каждого пользователя как нового и не использовать кеширование)
  4. Модель подключения к веб-тесту: количество подключений для каждого пользователя

Конфигурация сервера, на котором размещена HTML-страница:

  1. 8 ГБ RAM
  2. 8-ядерный процессор Intel Xeon (X 2)
  3. Операционная система Windows Server 2008 R2 Enterprise edition
  4. IIS 7

Результаты:

Запросы в секунду Минимум Среднее Максимум 130 310 540

Время отклика (секунды) Минимум Среднее Максимум 0,51 9,76 18,71

Это кажутся очень маленькими цифрами, поскольку они указывают на то, что при постоянной загрузке в 5000 пользователей в среднем пользователям придется ждать почти 10 секунд, чтобы получить ответ. Что могло способствовать такому снижению производительности?


Ответы:


1

Я бы посмотрел, как сервер загружает ваш сервер. Когда 5000 виртуальных пользователей попадают на статическую html-страницу, ее ЦП должен быть максимально загружен, а это означает, что вы получаете ожидание на ЦП для всех задач, включая получение данных о времени. Когда тест работает так «горячо», вы не получите значимых результатов.

Мой опыт работы со статическим HTML показывает, что IIS 7 очень хорошо оптимизирован для этого типа нагрузки, и на практике узким местом будет пропускная способность вашего поставщика услуг.

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

Более простой расчет заключается в том, что как только вы достигнете 75% или около того внешней пропускной способности, вы получите экспоненциально увеличивающееся время отклика для некоторых ваших запросов (большинство из них проходят менее чем за секунду).

Фактически, основываясь на ваших цифрах, я мог предположить, что у вас есть сеть со скоростью 100 Мбит / с между двумя машинами, что может быть узким местом.

11.04.2011
Новые материалы

Не зря же это называют интеллектом
Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..

LeetCode Проблема 41. Первый пропущенный положительный результат
LeetCode Проблема 41. Первый пропущенный положительный результат Учитывая несортированный массив целых чисел, найдите наименьшее пропущенное положительное целое число. Пример 1: Input:..

Расистский и сексистский робот, обученный в Интернете
Его ИИ основан на предвзятых данных, которые создают предрассудки. Он словно переходит из одного эпизода в другой из серии Черное зеркало , а вместо этого представляет собой хронику..

Управление состоянием в микрофронтендах
Стратегии бесперебойного сотрудничества Микро-фронтенды — это быстро растущая тенденция в сфере фронтенда, гарантирующая, что удовольствие не ограничивается исключительно бэкэнд-системами..

Декларативное и функциональное программирование в стиле LINQ с использованием JavaScript с использованием каррирования и генератора ...
LINQ - одна из лучших функций C #, которая обеспечивает элегантный способ написания кода декларативного и функционального стиля, который легко читать и понимать. Благодаря таким функциям ES6,..

Структуры данных в C ++ - Часть 1
Реализация общих структур данных в C ++ C ++ - это расширение языка программирования C, которое поддерживает создание классов, поэтому оно известно как C с классами . Он используется для..

Как я опубликовал свое первое приложение в App Store в 13 лет
Как все началось Все началось три года назад летом после моего четвертого класса в начальной школе. Для меня, четвертого класса, лето кажется бесконечным, пока оно не закончится, и мой отец..