Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Диагностика производительности .NET приложений в production | Дмитрий Левченко | AzovDevMeetup 2018

Диагностика производительности .NET приложений в production | Дмитрий Левченко | AzovDevMeetup 2018

Анализ качества работы и вопросы производительности приложений обычно решаются при разработке и тестировании, но что можно сделать если приложение уже развёрнуто в рабочем окружении и обнаружились проблемы? Оказывается, не так уж и мало. Доклад посвящён тому, какие возможности доступны, как можно искать узкие места в производительности .NET приложений в production, с чего начинать анализ и чем можно воспользоваться. Ознакомимся с рядом техник и утилитой PerfView.

JSC “Arcadia Inc.”

October 13, 2018
Tweet

More Decks by JSC “Arcadia Inc.”

Other Decks in Programming

Transcript

  1. 2018 О чем будем говорить • Анализ производительности: с чего

    начать • Использование PerfView для диагностики CPU и памяти • Автоматизация PerfView • Создание и использование дампов памяти процесса • Продвинутые инструменты 2
  2. 2018 .Net production • Windows + .Net Framework • .Net

    Core / Linux / Docker • Управляемое облачное окружение (Azure, Amazon etc.) • Остальное 3
  3. 2018 .Net production • Windows + .Net Framework • .Net

    Core / Linux / Docker • Управляемое облачное окружение (Azure, Amazon etc.) • Остальное 4
  4. 2018 Частые проблемы • Загрузка CPU • Высокое потребление памяти

    • Низкая скорость работы • Неожиданное завершение работы 5
  5. 2018 Что стоит сделать заранее • Знать, как система должна

    работать в обычном режиме, что ожидать • Знать требования к производительности • Логирование и самодиагностика • Настройка окружения и утилит 6
  6. 2018 Как понять, что именно идёт не так • Диспетчер

    задач • Монитор ресурсов • Файл подкачки • Дисковая и сетевая активность • Открытые порты • Монитор производительности 7
  7. 2018 Профайлеры • Заметно влияют на производительность приложения • Могут

    требовать перезапуска приложения • Требуют предварительной установки и настройки • $$$ 8
  8. 2018 PerfView • Внутренняя утилита команды .Net в Microsoft •

    Сделана инженерами для инженеров • Мощная • Не требует установки • Низкие накладные расходы • Бесплатная 9
  9. 2018 Event Tracing for Windows (ETW) • Высокоэффективная подсистема логирования

    • Работает на уровне ядра • Архитектура: Provider / Consumer / Tracing Session 12
  10. 2018 Примеры источников данных ETW • Kernel CPU sample provider

    – call stack каждую 1 мс. • CLR Garbage collection • CLR Allocation Tick • CLR Exception thrown • File I/O, Registry, Network, и другие… 13
  11. 2018 Прочие возможности PerfView •Wall Clock Time анализ •Поддержка TPL

    (async/await) •Создание легковесных дампов памяти процесса и функция сравнения •Принудительный вызов сборки мусора в процессе •Интерфейс командной строки •Средства автоматизации 18
  12. 2018 Демо: автоматический мониторинг • Perfview /NoGui collect "/StopOnPerfCounter=Process:%% Processor

    Time:w3wp>50" -MinSecForTrigger:3 -ThreadTime -CircularMB:500 - CollectMultiple:5 -accepteula website-demo-iis.etl 19
  13. 2018 Продвинутые инструменты •WinDbg • Отладка • Анализ дампов памяти

    • Поиск взаимных блокировок потоков • Поддержка расширений •ClrMD • Программный анализ дампов памяти • Возможность анализа работающего процесса 21
  14. 2018 Ссылки • ETW Events https://docs.microsoft.com/en- us/dotnet/framework/performance/etw-events • PerfView https://github.com/microsoft/perfview

    • https://channel9.msdn.com/Series/PerfView-Tutorial • ProcDump https://docs.microsoft.com/en- us/sysinternals/downloads/procdump • ClrMD https://github.com/microsoft/clrmd • Sasha Goldshtein https://sashagoldshtein.me/ • Ben Watson https://www.writinghighperf.net/ 22