В процессе работы пользователей в клиент-серверном варианте базы данных периодически возникает ситуация, когда программа 1С кратковременно подвисает, после чего появляется системное диалоговое окно с сообщением об ошибке и предложением завершить или перезапустить работу приложения. При этом чистка локального пользовательского кэша на рабочих станциях дает лишь кратковременный эффект или не помогает вовсе. Разберем по шагам, почему возникает такое поведение и как локализовать и устранить сбой.
Одной из наиболее распространенных причин внезапного падения сеансов является выполнение ресурсоемких или некорректно работающих фоновых заданий. Например, автоматическая загрузка новостей, синхронизация классификаторов или регламентный обмен данными могут вызывать утечки памяти и сбои в процессах сервера или на клиенте.
Проанализируем методику локализации сбойного фонового задания:
ЗагрузкаНовостей, автоматическое обновление классификаторов, обновление индекса полнотекстового поиска).В ряде случаев, когда сбой приводит к падению рабочего процесса rphost, полезно временно заблокировать регламентные задания на уровне свойств информационной базы в консоли администрирования кластера серверов 1С (флаг Блокировка регламентных заданий включена), чтобы убедиться, что причина кроется именно в фоновых потоках.
Если очистка локальных каталогов временных файлов (каталогов %LOCALAPPDATA%\1C\1cv8 и %APPDATA%\1C\1cv8) помогает лишь на короткое время, выясним причину: поврежденные данные восстанавливаются из системного хранилища настроек самой базы данных при повторном входе пользователя.
Для полного сброса настроек проблемного пользователя выполним следующие действия:
Рассмотрим аппаратные ограничения клиентского приложения. 32-битный клиент «1С:Предприятие» (исполняемый файл 1cv8c.exe) имеет жесткое ограничение виртуального адресного пространства процесса в 2 ГБ (или до 3 ГБ при специальной конфигурации ОС). При работе с массивными динамическими списками, тяжелыми отчетами или сложными формами память исчерпывается, что приводит к моментальному аварийному завершению процесса с ошибкой нарушения прав доступа (Access Violation, код 0xc0000005).
Разберем способы решения:
Если отключение регламентных заданий и очистка настроек не дали стабильного результата, задействуем расширенную диагностику для точного выявления сбоя.
Посмотрим на системный журнал Windows: откроем оснастку Просмотр событий (eventvwr.msc), перейдем в Журналы Windows -> Приложение (Application) и найдем ошибки типа Error от источника Application Error, связанные с процессами 1cv8c.exe, 1cv8.exe или rphost.exe. В описании события зафиксируем имя сбойного модуля (faulting module name). Если сбой вызывает сторонняя динамическая библиотека (драйвер сканера, компонента криптографии, модуль принтера), обновим или переустановим соответствующее ПО.
Для детального расследования падений на стороне сервера настроим сбор технологического журнала 1С. Для этого в каталоге конфигурационных файлов (для Windows: C:\Program Files\1cv8\conf) создадим файл logcfg.xml со следующим содержимым:
<config xmlns="http://v8.1c.ru/v8/tech-log">
<dump location="C:\v8logs\dumps" create="1" type="2" />
<log location="C:\v8logs\crashes" history="48">
<event>
<eq property="name" value="EXCP" />
</event>
<event>
<eq property="name" value="PROC" />
</event>
<property name="all" />
</log>
</config>
События EXCP (исключительные ситуации) и PROC (запуск и аварийная остановка процессов) позволят точно увидеть контекст исполнения кода 1С и текст фатальной ошибки в момент падения сеанса.
Проанализируем состояние самой информационной базы. Нарушение целостности индексов и устаревшая статистика в SQL-базе могут приводить к сбоям при формировании планов запросов СУБД.
Выполним комплекс регламентных процедур:
DBCC CHECKDB).