NexxDigital - компьютеры и операционные системы

January 11th, 2016 , 05:30 pm

У пользователя возникла проблема: 1С не запускается, а точнее при открытии уходит в dump и вылетает.

Помогает следующее, нужно отключить аппаратное ускорение видеокарты


  • Откройте свойства экрана. Это можно сделать через Панель управления, или просто щелкнув правой кнопкой мыши по любому месту рабочего стола, свободному от окон и значков, и выбрав пункт контекстного меню «Свойства».

  • В открывшемся окне настройки дисплея перейдите на закладку «Параметры» и нажмите кнопку «Дополнительно».

  • В открывшемся окне свойств видеокарты перейдите на вкладку «Диагностика».

  • Передвиньте движок «Ускорение» в крайнюю левую позицию («нет») и нажмите «Применить» или «Ок». Аппаратное ускорение отключено. Изменения вступят в силу после перезагрузки системы.

В Windows 7:

  • Откройте Панель управления (Пуск & Панель управления).

  • Найдите и откройте элемент «Экран».

  • В левой части открывшегося окна щелкните по ссылке «Настройка параметров экрана».

  • В открывшемся окне нажмите на ссылку «Дополнительные параметры».

  • Перейдите на вкладку «Диагностика» и нажмите кнопку «Изменить параметры».

  • В открывшемся окне передвиньте движок в крайнее левое положение («нет») и нажмите «Ок». Если UAC включен, придется подтвердить, что изменения санкционированы пользователем. Аппаратное ускорение отключено. Изменения вступят в силу после перезагрузки системы.

В Windows 7 в некоторых случаях кнопка «Изменить параметры» будет неактивна. В этом случае отключить аппаратное ускорение невозможно, так как видеокарта и ее драйвер не поддерживают манипуляции аппаратным ускорением.

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

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

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

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

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

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

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

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

Файл настроек 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: Крах();
……

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Первое что необходимо сделать, это настроить технологический журнал (ТЖ).

Если кто не знает что это за зверь, то вам .

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

Есть 2 причины:

1. Если вдруг проблемы возникнут, то у вас уже будут все данные для расследования.

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

Файл настроек ТЖ, тот который logcfg.xml, должен выглядеть следующим образом:

Теперь давайте разберемся с тем, что здесь написано.

Во второй строке мы включаем запись дампа, т.е. в случае краха одного из процессов дамп будет записан в каталог «c:\v82\dumps» и при необходимости поможет разработчикам платформы найти причину ошибки.

Дамп образуется только в случае падения одного из процессов, т.е. если в каталоге damps появятся файлы, это значит, что у вас есть проблемы со стабильностью.

В третьей строке мы включаем запись логов ТЖ, как не трудно догадаться, логи будут записываться в каталог «c:\v82\logs» и храниться 48 часов.

Событие EXCP пишется в случае возникновения исключения, и нужно что бы узнать какой код выполнялся в момент ошибки.

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

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

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

Имя дампа строится по следующему шаблону:

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

ГГГГММДДЧЧММСС - это дата и время падения, в нашем примере это 2013.10.25 16:24:41

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

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

Из названия дампа, мы знаем точное время падения, теперь необходимо выяснить, что происходило в это время в системе, и здесь нам помогут логи ТЖ.

ТЖ пишется в отдельный каталог для каждого процесса, имя каталога формируется по шаблону ИмяПроцесса_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: Крах();

Форма.Форма.Форма: 5: Крах();

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

Process - имя процесса, где возникло исключение

processName - имя информационной базы

applicationName - клиент с которого пришел вызов, приведший к падению, в данном случае это тонкий клиент

computerName - имя компьютера, на котором был запущен клиент

Context - код, который выполнялся в момент падения, это самое важное для нас событие.

С помощью контекста иногда (но реже чем хотелось бы) удается понять причину ошибки.

В моем случае причина падения очевидна, это бесконечная рекурсия.

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

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

В версии 8.2.13 есть одна очень популярная ошибка при работе с объектом «СистемнаяИнформация»

Контекст ТЖ выглядит примерно так:

Context=’Инфо = Новый СистемнаяИнформация;

Текст = "Версия 1С " + Инфо.ВерсияПриложения;’

На первый взгляд ничего криминального здесь нет, но надо помнить, что 1С это многопользовательская система, и объекты должны быть спроектированы с учетом параллельности работы пользователей, как раз здесь часто и ошибаются разработчики платформы.

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

Обход проблемы очень прост, нужно просто закомментировать обращение к объекту. В данном случае это не проблема, т.к. обычно без системной информации вполне можно обойтись.

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

Вы конечно можете обратиться в тех. поддержку 1С, но это, мягко говоря, не самый быстрый способ:)

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

Если вы не работаете во франчайзи и у вас нет доступа на партнерский форум, то наверняка у вас есть друзья или знакомые, которые там работают.

Это намного более быстрый способ, чем обращение через тех. поддержку или решение проблемы методом научного тыка.

На партнерском форуме на ваши вопросы отвечают не только специалисты, которые возможно уже сталкивались с такой проблемой, но и сами разработчики платформы.

При обращении на форум, обязательно указывайте следующую информацию:

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


Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter
ПОДЕЛИТЬСЯ:
NexxDigital - компьютеры и операционные системы