4

У меня есть проблемы с временем отклика, связанным с решением WebAPI в IIS. Я генерирую нагрузку, используя простой план тестирования JMeter, работающий на моей машине разработки. Мой план тестирования повторяет 15 статических вызовов с использованием 15 потоков. Нагрузка составляет около 90 тыс. Запросов в течение 7 минут. Пропускная способность составляет около 203 requests per second.Проблема масштабирования производительности IIS 7.5 WebAPI

Во время нарастания резьбы, где JMeter увеличивает нагрузку, время отклика начинает содержать всплески, которые продолжаются на протяжении всего теста. Машина и приложение действительно не кажутся сломать пот: нагрузка на процессор составляет около 30-40%, так что нигде не пропитано. Приложение не вернуло ни одной ошибки в течение всего теста.

Специфика о применении и машины:

  • Приложение является решением WebAPI .Net 4.6. Кэш находится в памяти на самой машине.
  • Хостинг на IIS 7.5, на 4CPU /4GB RAM машины
  • Интегрированный трубопровод пула приложений (.Net 4) с использованием одного рабочего процесса
  • модель процесса устанавливается в автоматический конфигурации в файле machine.config.

То, что я пытался до сих пор, чтобы решить эту проблему:

  • исключить влияние от сети и другой инфраструктуры, путем выполнения тестов на разных машинах и местах. Даже на самой машине с локальным хостом в вызовах.
  • Увеличен «ASP потоков на процессор Limit» от 25 до 100 (максимум)
  • Увеличение числа рабочих процессов 4
  • Отключение IIS входа полностью
  • Включение и отключение сжатия
  • динамического контента

Надеюсь, кто-то сможет указать мне в правильном направлении. Благодаря!

ответ

3

я рекомендовал бы в течение следующих этапов:

  1. двойной проверки JMeter здоровья машины, если JMeter машина не имеет достаточно ресурсов, выполнение может приостановить из-за сборки мусора на JVM или поменяв на уровне ОС , Более того, настройки по умолчанию JMeter подходят только для разработки тестов и отладки, вам нужно настроить хотя бы некоторые параметры JVM перед запуском теста. Ссылки:

  2. Заново запустить тест под телеметрию инструмент профилировщика на стороне IIS, проверить инструменты, такие как dotTrace или ANTS, может быть что-то не так с кодом приложения.
+0

Я сфокусировался на масштабировании IIS, видения туннеля yay!Я не упомянул, что мой JMeter-тест запускался из командной строки, поэтому не было проблем с памятью и другого горя в этом направлении. После профилирования с помощью dotTrace, Ninject DI-контейнер, по-видимому, дает штраф за производительность в некоторых запросах, но мне придется это немного больше, чтобы проверить эти ранние результаты. Спасибо за ваш вклад! – Oskar