Как собрать трейсы с помощью профилировщика dotTrace?

При высокой загрузке CPU процессом, замедлении работы приложения или зависании процесса для анализа проблемы полезно произвести профилирование и получить трейсы с помощью приложения dotTrace.

Для этого выполните следующие шаги:

Для OC Windows

  • Скачайте dotTrace Command-Line Profiler по ссылке https://share.ascon.ru/s/jspz5Mo3e6oftX4.
  • Распакуйте zip-архив.
  • Запустите и подготовьте приложение (Pilot-ICE, Pilot-ICE Enterprise, Pilot-BIM, Pilot-Server) к воспроизведению проблем производительности.
  • Запустите диспетчер задач и узнайте идентификатор диагностируемого процесса (ИД) на вкладке Подробности.
  • Создайте папку C:\Snapshots, если такой нет.
  • Запустите командную строку Windows (в случае диагностики проблем Pilot-Server – с правами администратора).
  • Вызовите dottrace.exe из папки, куда он был распакован, командой с параметрами:

    dottrace.exe attach 00000 --save-to=c:\Snapshots\snapshot.dtp

    Где:
    • 00000 — ИД диагностируемого процесса,
    • c:\Snapshots\snapshot.dtp — путь для записи собранной диагностической информации.
  • Переключитесь на диагностируемый процесс и воспроизведите проблемы с производительностью. Для лучшего анализа диагностической информации предпочтительно, чтобы приложение испытывало проблемы с производительностью на протяжении всего времени.
  • Переключитесь в командную строку с запущенным dottrace.exe, нажмите Ctrl+C (один раз, второе нажатие Ctrl+C отменит запись диагностической информации).
  • Дождитесь окончания записи диагностической информации (об этом будет сообщено в командной строке), заархивируйте содержимое папки C:\Snapshots и отправьте архив в службу поддержки Аскон.

Также можно ознакомиться с документацией https://www.jetbrains.com/help/profiler/.

Для семейства ОС Linux

  • Скачайте dotTrace Command-Line Profiler по ссылке https://share.ascon.ru/s/aYocqkRYfD2jo8F.
  • Распакуйте архив tar.gz.
  • Дайте права на исполнение файлам dottrace, dotTrace.sh, runtime-dotnet.sh в основной папке и файлу dotnet, который находится по пути ./linux-x64/dotnet/.
  • Создайте папку snapshots в основной папке, куда был распакован dotTrace Command-Line Profiler.
  • Чтобы профилировать приложение .NET Core 3.1 или более поздней версии, необходимо запустить dotTrace Command-Line Profiler с указанием параметров запуска приложения.
  • Для остановки процесса профилирования нажмите один раз Ctrl+C.
  • Заархивируйте содержимое папки snapshots и приложите архив к запросу, отправленному в службу поддержки Аскон.

Чтобы увидеть полный список доступных опций, запустите инструмент dotTrace Command-Line Profiler без аргументов

./dotTrace.sh

Пример запуска dotTrace с указанием параметров запуска приложения Ascon.Pilot.Daemon

# ./dottrace start --framework=NetCore --save-to= /opt/dotTrace.CommandLineTools.linux-x64.2022.2.4/snapshots/snapshot1.dtp /opt/pilot-server/Ascon.Pilot.Daemon /opt/pilot-server/settings.xml

Где:

  • /opt/dotTrace.CommandLineTools.linux-x64.2022.2.4/snapshots/snapshot1.dtp — путь до файла, куда будем сохранять результат профилирования;
  • /opt/pilot-server_25.1.0.53184/Ascon.Pilot.Daemon — путь до исполняемого файла приложения;
  • /opt/pilot-server/settings.xml — указываем путь до файла settings.xml.

Пример запуска dotTrace с указанием параметров запуска приложения Ascon.Pilot.Daemon в кластерном режиме

# ./dottrace start --framework=NetCore --save-to=/opt/dotTrace.CommandLineTools.linux-x64.2022.2.4/snapshots/snapshot1.dtp /opt/pilot-server/Ascon.Pilot.Daemon -- --pgConnectionString="Host=mypostgres:5432; Username=pilotuser; Password=password; Include Error Detail=true; Pooling=true; Connection Lifetime=0; Keepalive=3; DataBase=configurationdb" --indexPath="/Indexes"

Где:

  • /opt/dotTrace.CommandLineTools.linux-x64.2022.2.4/snapshots/snapshot1.dtp — путь до файла, куда будем сохранять результат профилирования;
  • /opt/pilot-server_25.1.0.53184/Ascon.Pilot.Daemon — путь до исполняемого файла приложения;
  • -- — экранирование dotTrace Command-Line Profiler при необходимости;
  • Host=mypostgres:5432; Username=pilotuser; Password=password; Include Error Detail=true; Pooling=true; Connection Lifetime=0; Keepalive=3; DataBase=configurationdb — строка подключения к конфигурационной базе PostgreSQL с параметрами. Подробнее можно ознакомиться в статье Запуск Pilot-Server в кластерном режиме.