Please, pay attention that now you are in public part of FAQ-Area. Register and find more FAQ-articles in Personal Cabinet.

FAQ#7001291: Сбор дамп памяти для приложения Ascon.Pilot.Daemon (Linux)

Keywords: Linux дамп Created: 2021-06-24 14:33:00
Linked Articles: Changed: 2022-01-13 18:09:45

Problem:

Сбор дампа памяти для приложения Ascon.Pilot.Daemon (Pilot-Server for Linux). Необходим при диагностировании зависания процесса.

Solution:

Для того, чтобы снять дамп памяти для приложения Ascon.Pilot.Daemon необходимо подготовить окружение:

  1. Проверить какая версия runtime установлена на машине https://docs.microsoft.com/ru-ru/dotnet/core/install/how-to-detect-installed-versions?pivots=os-linux
     

    $ dotnet --list-sdks

    или

    $ dotnet --info

    Если .NetCore Runtime не установлен, его следует установить
     

  2. Установить .NetCore Runtime (текущая версия 5.0)

    Установка .NetCore на Linux

    Установка с помощью скрипта

    Ручная установка
     

  3. После установки .NetCore Runtime необходимо установить инструмент для снятия дампа

    https://docs.microsoft.com/ru-ru/dotnet/core/diagnostics/dotnet-dump

    Можно установить как глобально в систему так и скопировать в папку с целевым приложением.
     

  4. После установки проверяем работоспособность утилиты

    $ dotnet-dump --version
     

  5. Далее, необходимо дать права на запуск утилите createdump, которая лежит рядом с Ascon.Pilot.Daemon

  • переходим в папку с установленным Ascon.Pilot.Daemon. Например:

    $cd /opt/pilot-server

  • Задаем права на запуск для createdump

    $ chmod u+x createdump

 

Собираем дамп памяти

Теперь можно переходить непосредственно к сбору дампа. Для этого необходимо запустить утилиту dotnet-dump.

Внимание! Чтобы собрать дамп с помощью dotnet-dump, ее необходимо запустить от имени пользователя, запустившего целевой процесс, или от имени привилегированного пользователя. В противном случае средство не сможет установить соединение с целевым процессом.

 

  1. Перед тем как снять дамп необходимо узнать PID процесса целевого приложения. Посмотреть PID, например, можно с помощью команды $htop или $ps aux | grep Ascon.Pilot.Daemon

  2. Запускаем создание дампа:

    $ dotnet-dump collect -p <PID_of_target_app>

Файл дампа сохранится в ту же папку где лежит Ascon.Pilot.Daemon в формате ./core_YYYYMMDD_HHMMSS