На осенней конференции INFOSTART TECH EVENT 2024 выступали с докладом на тему «Дамп – не приговор, а повод задуматься». Материал вызвал большой интерес, поэтому решили подготовить на его базе цикл статей. В первой части рассмотрим, что такое дамп и как включить сбор файлов дампа для операционных систем Windows и Linux.
Что такое дамп?
Дамп – это файл, создаваемый при аварийном завершении процесса. На слайде ниже демонстрируется 2 скриншота, сделанные в операционных системах Windows и Linux соответственно.
И для начала ответим на вопрос: когда нужно включать сбор дампов?
Сбор как таковой нужно включать в самом начале жизни вашей системы при настройке продуктивных и предпродуктивных (если у вас есть такая роскошь) контуров. Можно, конечно, жить и без этого, но не всегда счастливо. Есть некоторые признаки, которые говорят, что точно пора.
Во-первых, это признаки на уровне информационной базы:
- жалобы пользователей на внезапное закрытие приложения, как с ошибкой, так и без нее
- в журнале регистрации регулярно обнаруживаются ошибки с текстом «Аварийно завершился рабочий процесс…»
На практике это выглядит примерно так: сотрудник запустил в 1С:ERP расчет себестоимости, задача выполняется в фоновом режиме, на ее реализацию может уйти несколько часов, а в результате сотрудник вместо долгожданных расчетов видит на экране информацию об аварийном завершении процесса.
Во-вторых, полезно обращать внимание на журнал событий операционной системы. В ОС Windows это всем вам наверняка знакомый Event log. В ОС Linux можно воспользоваться утилитой journalctl, которая позволит не только посмотреть события системного журнала за определенный период, но и сделать отбор по наименованиям нужных вам сервисов процессов. Как выглядят записи журнала при аварийном завершении процессов – показано на изображении ниже.
В этих журналах фиксируются ключевые сведения, помогающие разобраться в проблема:
- наименование процесса, который аварийно завершился
- идентификатор процесса
- сигнал, который операционная система послала процессу при аварийном завершении. На примере выше это «sig=11» то есть, то есть ошибка сегментации памяти.
Еще один косвенный признак того, что пора включать сбор дампов – наличие в каталоге технологического журнала (ТЖ) 1С неожиданно большого количества директорий rmngr/rphost/.... «Неожиданно» – это когда вы ничего для этого делали: не ставили галочку «Менеджер под каждый сервис», не указывали в настройках «Количество ИБ на процесс = 1» в кластере со 125 тестовыми базами с включенными регламентными заданиями. Не ломали кластер, проще говоря. Тогда все это указывает на то, что процессы регулярно перезапускаются. Возможно, и без формирования дампа, но это не точно.
Как включить сбор файлов дампов: инструкции для операционных систем Windows и Linux
В ОС Windows есть два взаимодополняемых способа:
1) Включить сбор дампов средствами платформы 1С. Для этого в конфигурационный файл технического журнала logcfg.xml нужно поместить элемент <dump>, прописать dump create="true" и каталог формирования файлов, например location="D:\1c\dumps", а также указать тип дампа 0 или 3, где 0 – это минимальный тип дампа, а 3 – полный дамп.
Подробнее по настройке технологического журнала 1С и файла logcfg.xml в документации на 1С:ИТС.
2) Настроить формирование дампов средствами ОС. Не во всех случаях исключение может быть корректно обработано платформой, поэтому ни в коем случае нельзя забывать о настройке Windows Error Reporting. Подробности в инструкции по ссылке.
Сбор дампов для Linux включает 3 этапа: настройку, применение и проверку
Рассмотрим вкратце ключевые моменты.
1) Настройка. Если для управления запуском процессов 1С вы используете systemd, вам необходимо отредактировать unit-файл вашей службы, и в секцию Service обавить магическое заклинание LimitCORE=infinity. В ином случае необходимо задать лимиты, отредактировав конфигурационный файл /etc/security/limits.conf: нужно снять лимиты на размер файла дампа; по умолчанию лимит=0, то есть, файл дампа создаваться не может.
2) Применение. После того, как мы поменяли конфигурационные файлы, нужно применить эти изменения и перезапустить службы сервера 1С.
3) Проверка. На этом этапе необходимо убедиться, что все получилось. Для этого получаем статус службы сервера 1С, выявляем идентификатор рабочего процесса и проверяем в конструкции cat установленные лимиты для этого рабочего процесса.
Дополнительно можно аварийно завершить процесс по идентификатору, отправив ему, к примеру, сигнал 6 (sudo kill -6). Важно: данный вид проверки нужно выполнять строго в технологическое окно, так как это может привести к внезапному завершению работы ничего не подозревающих пользователей.
4) Можно пойти и другим путем, ведь Linux – это бесконечное количество вариантов и возможностей. Например, мы в последнее время в работе используем утилиту coredumpctl. Она дает много возможностей как в части настройки, так и в части анализа, но это уже тема для отдельного материала.
Это была первая статья по докладу Максима Кулбаракова «Дамп – не приговор, а повод задуматься». В следующей части посмотрим, какую информацию содержит файл дампа, чем она может быть полезна и как ее анализировать.