Как диагностировать ошибки платформы «1С:Предприятие 8»

Другие статьи по оптимизации 1С:

«Как в 1С регистрировать ошибки платформы»

«Описание и включение ТЖ»

«Настройка ТЖ»

Как диагностировать ошибки платформы «1С:Предприятие 8»

Что Вы узнаете из этой статьи?

  • Способы диагностики некорректной работы платформы «1С:Предприятие 8»
  • Алгоритм действий при аварийном завершении 1С
  • Настройку технологического журнала для анализа «падений» процессов кластера серверов

Не секрет, что платформа «1С: Предприятие 8», как и любое другое программное обеспечение, содержит ошибки. Некоторые из них являются настолько серьезными, что вызывают аварийное завершение процессов сервера приложений 1С.

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

С чего начать?

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

В данной ситуации для начала необходимо настроить технологический журнал (далее — ТЖ).

Даже если Вы не наблюдаете проблем, рекомендуется настроить сбор логов. Для чего?

1. При возникновении проблем у Вас уже будут данные для анализа причин плохого поведения системы.
2. Вполне вероятно, что проблемы все-таки есть, но Вы о них ничего не знаете. К примеру, процессы сервера «падают» раз в 3-4 месяца, но пользователи не сообщают Вам об этом, предпочитая просто перезапуститься.

Файл настроек logcfg.xml технологического журнала должен выглядеть так:

Пример файла настроек logcfg.xml

Рассмотрим более подробно, что в нем содержится.

Первая и последняя строка открывают и закрывают xml-файл настроек.

Вторая строка включат запись дампа: при крахе одного из процессов наш дамп будет записан в указанный каталог и может помочь разработчикам платформы найти причину возникновения ошибки. При этом необходимо понимать, что дамп создается только при падении одного из процессов.

Таким образом, наличие файлов в указанном каталоге c:\v82\dumps говорит о наличии проблем со стабильностью работы.

Третья строка включает запись логов ТЖ: логи будут храниться в указанном каталоге в течении 48 часов. Событие EXCP будет зафиксировано в случае возникновения исключения, это нужно, чтобы узнать, какой код выполнялся в момент ошибки.

События PROC и ADMIN вполне могут пригодиться разработчикам платформы для анализа проблем.

Вы должны учитывать, что сами логи могут занимать достаточно много места на диске. Хотя, в приведенной настройке ТЖ логи не должны сильно расти — благодаря ограничению по времени хранения логов.

Что делать, если появится дамп?

Рассмотрим пример: в каталоге dumps появился файл: rphost_8.2.18.102_7c938235_20131025162441_3348.mdmp

Его имя построено по шаблону: ИмяПроцесса_Релиз_АдресОшибки_ГГГГММДДЧЧММСС_PIDПроцесса.mdmp

В котором ГГГГММДДЧЧММСС – это дата и время падения.

Каждая ошибка, из-за которой происходит падение, имеет свой уникальный АдресОшибки.

Причем если у двух дампов одинаковый процесс, релиз и адрес ошибки, то причина падения одна и та же. Исходя из названия файла дампа мы определяем время падения системы. Осталось узнать, что происходило в системе в указанное время, и тут нам пригодятся логи ТЖ.

ТЖ записывается для каждого процесса в свой отдельный каталог, имя которого задается по шаблону ИмяПроцесса_PIDПроцесса.

Запись технологического журнала

Имя файла лога задается следующим образом: ГГММДДЧЧ.log

Для определения причины падения системы переходим в каталог с логами аварийно завершившегося процесса. Это можно сделать по имени файла, в котором присутствуют имя и PID-процесса. В нашем случае это каталог rphost_3348.

Далее в искомом каталоге нужно взять тот лог, в который была записана информация в момент падения системы: определяем время падения из имени дампа и находим необходимый файл лога. В нашем случае это файл 13102516.log.

Затем открываем файл лога и находим строку rphost_8.2.18.102_7c938235_20131025162441_3348.

В моем логе отражено следующее:

0,EXCP,3,process=rphost,p:processName=Test,t:clientID=2,t:applicationName=1CV8C,t:computerName=AND-SERVER,t:connectID=196,SessionID=4,AppID=1CV8C,OSException=rphost_8.2.18.102_7c938235_20131025162441_3348,Context=’Форма.Вызов : ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Модуль.Крах
Форма.Форма.Форма : 5 : Крах();
Форма.Форма.Форма : 5 : Крах();
Форма.Форма.Форма : 5 : Крах();
Форма.Форма.Форма : 5 : Крах();
……

Рассмотрим информацию данной строки:

EXCP – данное событие означает, что в системе возникло какое-либо исключение. Через запятую перечислены свойства этого события, приведем основные из них:

  • Process – имя процесса, где возникло исключение
  • processName – имя информационной базы
  • applicationName – клиент с которого пришел вызов, приведший к падению, в данном случае это тонкий клиент
  • computerName – имя компьютера, на котором был запущен клиент
  • Context – код, который выполнялся в момент падения, это самое важное для нас событие

Иногда с помощью контекста удается установить причину возникновения ошибки. В нашем случае причина падения достаточно очевидна — бесконечная рекурсия.

Рассмотрим другой пример

В версии 8.2.13 платформы «1С:Предприятие» присутствует очень популярная ошибка при работе с объектом «СистемнаяИнформация». При этом контекст ТЖ выглядит следующим образом:

Context=’Инфо = Новый СистемнаяИнформация;
Текст = «Версия 1С » + Инфо.ВерсияПриложения;’

Заметим, что ошибки, проявляющиеся в при одновременном обращении к одному объекту нескольких пользователей, встречаются достаточно часто, и если образовалось несколько дампов, и в контексте указан один и тот же объект (в данном примере «СистемнаяИнформация»), то, скорее всего, это как раз тот случай.

Проблема решается тривиально: нужно закомментировать обращение к объекту. В нашем случае это не проблема, так как без системной информации можно обойтись.

Что делать, если понять причину падения по логам самостоятельно не удается?

Прежде всего, Вы можете обратиться в техническую поддержку фирмы «1С». Но это не самый быстрый способ.

Есть более удобный и быстрый вариант: разместить на партнерском форуме сообщение с описанием проблемы и прикрепить архив с дампом и логами к сообщению или дать ссылку на него.

Это лучше, чем обращение через техническую поддержку или решение проблемы методом «научного тыка». На партнерском форуме Вам, возможно, ответят не только специалисты, которые, скорее всего, уже сталкивались с подобной проблемой, но и сами разработчики платформы. При обращении на форум обязательно указывайте следующую информацию:

  • Версию и разрядность серверной ОС
  • Разрядность сервера 1С
  • Количество серверов в кластере
  • Количество запущенных рабочих процессов на сервере 1С
  • Версию используемой СУБД
  • Ссылки на архив с дампом и логами для скачивания

Следует отметить, что этот вариант доступен только сотрудникам фирм-партнеров компании «1С».

Бурмистров Андрей

PDF-версия статьи для участников группы ВКонтакте

Мы ведем группу ВКонтакте — http://vk.com/kursypo1c.

Если Вы еще не вступили в группу — сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.

Если Вы уже участник группы — нужно просто повторно авторизоваться в ВКонтакте, чтобы скрипт Вас узнал. В случае проблем решение стандартное: очистить кеш браузера или подписаться через другой браузер.
Станьте экспертом по оптимизации 1С, изучив наш курс
«Ускорение и оптимизация систем на 1С:Предприятие 8.3 (2016). Подготовка на 1С:Эксперт по технологическим вопросам»

Содержание курса и форма заказа: http://курсы-по-1с.рф/1c-v8/optimization/

35 учебных часов, подготовка к 1С:Эксперт, правильная настройка серверной части, оптимизация кода, мониторинг загруженности оборудования и прочие взрослые вещи.

3 Responses to Как диагностировать ошибки платформы «1С:Предприятие 8»

  • Данияр
    hjkl

    Добрый день.
    Подскажите пожалуйста как создать настройку технологического журнала — где начать это нужно сделать — в конфигураторе или в консоли кластера или …?

Написать ответ

Ваш email не будет опубликован. Обязательные поля отмечены *