высокая производительность в процессе работы - PullRequest
3 голосов
/ 15 февраля 2012

В настоящее время я выполняю тесты производительности в веб-приложении .net, написанном на c #. У меня есть инструмент тестирования, который имитирует нагрузку 200 пользователей на Windows Server 2008.

Это приводит к очень высокопроизводительному использованию процессора ~ 80%, что меня беспокоит. Я чувствую, что это может быть проблемой в моем коде, так как это рабочий процесс для веб-приложения, который вызывает высокую загрузку ЦП.

Как я могу отладить это дальше, чтобы выяснить, в чем проблема с моим кодом, вызывающим это? Есть ли какие-либо инструменты, которые я мог бы использовать, чтобы помочь мне с этим? Я выполняю perf monitor на сервере для сбора состояний, но это только помогает мне.

Ответы [ 4 ]

3 голосов
/ 15 февраля 2012

Editions Ultimate и Premium Visual Studio поставляются с профилировщиком, который может помочь вам быстро найти вызовы методов, которые потребляют больше всего ресурсов процессора.См .: http://msdn.microsoft.com/en-us/library/ms182372.aspx

Альтернативой является ANTS Profiler , который имеет 21-дневную пробную версию, и она ДЕЙСТВИТЕЛЬНО хороша.См .: http://www.red -gate.com / supportcenter / content / ANTS_Profiler / статьи / profiling_web_app

2 голосов
/ 15 февраля 2012

отделяет код клиента (ваш инструмент тестирования, который имитирует 200 пользователей) от сервера и помещает клиента на другую машину.

часто код клиента является узким местом.

1 голос
/ 15 февраля 2012

Интересные ответы пока. Существует инструмент Psscor4 - преемник модуля отладки SOS.dll. Это помогает исследовать многие живые данные из CLR. Я предлагаю некоторые глубокие чтения в Tess 'od Toms блогах. Много вещей для отладки ASP.NET.

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

1 голос
/ 15 февраля 2012

Если ответ @Diego не дает наилучших результатов, увеличьте его с 200 до 200 000 пользователей, запустите DebugDiag и настройте его для захвата дампа с высокими настройками ЦП и сбоя. Я собирался сказать это как комментарий, но я думал, что дам вам шаги:

Определение проблем высокой загрузки ЦП с IIS
Высокая загрузка ЦП определяется, когда процесс IIS (INETINFO.EXE, DLLHOST.EXE, W3WP.EXE) перестает отвечать на входящие запросы и не обслуживает веб-страницы из-за чрезмерной загрузки ЦП. Мы будем использовать шаги ниже, чтобы получить необходимые данные.

Действия по устранению неполадок

  1. Установите DebugDiag из http://www.microsoft.com/downloads/details.aspx?FamilyID=9bfa49bc-376b-4a54-95aa-73c9156706e7&DisplayLang=en на сервере. Путь установки по умолчанию - C: \ Program Files \ IIS Resources \ DebugDiag, и его можно изменить во время установки.

  2. Настройка ведения журнала Performance Monitor до возникновения проблемы:
    a) Откройте DebugDiag (Пуск -> Программы -> Диагностика IIS)
    б) Зайдите в меню Сервис -> Параметры и настройки
    c) Выберите вкладку «Журнал производительности»
    d) Нажмите «Включить регистрацию данных счетчика производительности»
    д) Нажмите OK
    Примечание. Интервал выборки данных и время начала мониторинга зависят от того, когда воспроизводится всплеск ЦП.

  3. Снимите флажок «Перехват исключений отладки» (IIS5 и IIS5.1), выполнив следующие действия:
    а) Откройте MMC для IIS
    б) Щелкните правой кнопкой мыши имя компьютера и выберите Свойства
    в) Нажмите кнопку «Редактировать» для основных свойств WWW
    г) Перейдите на вкладку Домашний каталог
    e) Нажмите кнопку конфигурации внизу
    е) Перейдите на вкладку «Параметры процесса» и снимите флажок «Включить отлов исключений отладки»
    ж) Нажмите OK

  4. Создайте правило зависания, выполнив следующие шаги:
    a) Откройте DebugDiag (Пуск -> Программы -> Диагностика IIS)
    б) Выберите «IIS Hang» и нажмите «Далее»
    c) Нажмите «Добавить URL» и введите URL, который воспроизводит зависание, например, http://ComputerName/HelloWorld.aspx, и нажмите ОК. Выберите ДА, когда вас попросят «проверить указанный URL».
    d) Нажмите OK и нажмите Next
    e) Нажмите «Добавить цель дампа» и выберите нужный тип цели
    f) Нажмите OK и нажмите Next. ж) Нажмите «Далее» для «Имя правила». «Местоположение Userdump» можно изменить здесь.
    h) Выберите «Активировать правило сейчас» и нажмите «Готово». Обратите внимание, что статус активен. Число пользовательских дампов будет увеличиваться при каждом создании файла дампа.

  5. Получить данные вручную, если во время установки сервер находился в состоянии высокой загрузки ЦП. В DebugDiag перейдите на вкладку «Процессы», щелкните правой кнопкой мыши процесс и выберите «Создать полный Userdump».

  6. Остановите PerfMon Logging примерно через две минуты после создания дампа процессов: a) Откройте DebugDiag (Пуск -> Программы -> Диагностика IIS)
    б) Зайдите в меню Сервис -> Параметры и настройки
    c) Выберите вкладку «Журнал производительности»
    d) Нажмите «Отключить регистрацию данных счетчика производительности»
    д) Нажмите OK

  7. Проанализируйте дамп, выбрав вкладку «Расширенный анализ» и нажав «Добавить файлы данных». После добавления .dmp выберите сценарий «Анализаторы сбоев / зависаний» и нажмите «Начать анализ». По завершении будет создан отчет (.mht) в папке C: \ Program Files \ IIS Resources \ DebugDiag \ Reports и отображен в Internet Explorer с результатами и рекомендациями. При использовании пользовательских библиотек DLL можно добавить путь к символам (меню «Сервис» -> «Параметры и настройки» -> «Путь поиска символов») к пользовательским файлам PDB.

  8. Сжатие данных с помощью DebugDiag (меню Сервис -> Создать инкрементный файл кабинета) и отправьте / опубликуйте этот файл здесь.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...