Каждый системный администратор и разработчик 1С рано или поздно сталкивается с крайне неприятной ситуацией: при попытке войти в информационную базу (как в режиме «1С:Предприятие», так и через «Конфигуратор») система зависает «намертво». Процесс загрузки останавливается, окно программы не отвечает, а в консоли администрирования кластера серверов появляются «призрачные» сеансы и соединения, которые невозможно завершить обычными средствами. При этом перезапуск службы сервера помогает лишь на короткое время, после чего зависание повторяется.
В этой статье мы подробно разберем, почему возникает эта проблема, проанализируем физику процессов, происходящих на сервере приложений, и рассмотрим пошаговые сценарии для восстановления стабильной работы вашей системы.
Для начала давайте проанализируем ситуацию. Зависание базы в клиент-серверном варианте (особенно на версиях платформы линейки 8.3.6, 8.3.7 и выше) чаще всего связано с тремя основными техническими факторами:
.lgd, работающий на базе СУБД SQLite. При высокой параллельной нагрузке (когда множество пользователей одновременно входят в систему или запускаются фоновые регламентные задания) SQLite блокирует весь файл базы данных журнала на запись. Потоки рабочего процесса сервера 1С (rphost.exe) уходят в бесконечное ожидание, вызывая зависание сеансов.Рассмотрим подробнее каждый метод решения этой проблемы — от простых и быстрых действий до глубокого технического обслуживания базы данных.
Если проблема носит локальный характер (база зависает только у некоторых пользователей), в первую очередь выполним очистку кэша 1С. Разберем по шагам безопасный алгоритм, который сохранит список баз данных пользователя:
1cv8.exe и 1cv8c.exe на компьютере пользователя через «Диспетчер задач».C:\Users\<Имя_Пользователя>\AppData\Roaming\1C\1CEStart\.ibases.v8i на «Рабочий стол» (это обезопасит вас от потери списка прописанных баз).1C из каталога C:\Users\<Имя_Пользователя>\AppData\Roaming\, а также аналогичную папку по пути C:\Users\<Имя_Пользователя>\AppData\Local\1C\.ibases.v8i обратно в каталог C:\Users\<Имя_Пользователя>\AppData\Roaming\1C\1CEStart\ с заменой существующего.Этот способ позволяет гарантированно избавиться от поврежденных файлов метаданных во временных каталогах пользователя.
Если база зависает у всех пользователей одновременно, а в консоли администрирования 1С висят неудаляемые «мертвые» соединения, нам потребуется перезапуск службы сервера приложений и очистка серверного кэша. Выполним следующие действия:
services.msc) на сервере приложений 1С.
taskkill /f /im rphost.exe
taskkill /f /im rmngr.exe
taskkill /f /im ragent.exe
C:\Program Files\1cv8\srvinfo\ или C:\Program Files (x86)\1cv8\srvinfo\).reg_1541) временные папки кэша сервера. Они имеют длинные буквенно-цифровые имена вида snccntryXXXX.... Удалите эти папки. Внимание! Не удаляйте файлы конфигурации кластера 1cv8reg.lst.Если после перезапуска службы сервера база снова зависает через несколько минут, это явный признак повреждения или блокировки файла журнала регистрации SQLite. Посмотрим на алгоритм исправления этой проблемы:
C:\Program Files\1cv8\srvinfo\reg_1541\<GUID_вашей_базы>\.1Cv8Log. Внутри неё находится файл журнала 1Cv8.lgd.1Cv8.lgd в 1Cv8_old.lgd (или переместите его в другой каталог). Это освободит сервер 1С от необходимости обрабатывать поврежденный или перегруженный лог-файл.1Cv8.lgd. Запуск базы должен пройти мгновенно и без сбоев.Полезный совет: Если вам критически важно сохранить старую историю логов журнала регистрации, вы можете попробовать восстановить поврежденную структуру SQLite-файла с помощью официальной консольной утилиты sqlite3.exe. Для этого выполните в командной строке последовательность инструкций:
sqlite3 1Cv8_old.lgd .dump >> backup.sql
sqlite3 1Cv8_new.lgd < backup.sql
После этого переименуйте файл 1Cv8_new.lgd обратно в 1Cv8.lgd и верните его в рабочий каталог базы 1С при остановленной службе сервера.
В случае, когда база намертво зависает именно в процессе обновления конфигурации на СУБД MS SQL, рекомендуется использовать обходной путь через файловую базу данных. Этот метод гарантирует успешное применение обновлений без конфликтов СУБД:
.dt из конфигуратора, если это возможно, либо сделайте бэкап средствами MS SQL Server).F7 для принятия изменений)..dt..dt.Этот подход минимизирует время простоя пользователей и позволяет избежать сложных коллизий блокировок таблиц СУБД в процессе реструктуризации тяжелых объектов метаданных.
Если зависания продолжают регулярно повторяться на разных базах, велика вероятность системного сбоя самой платформы 1С. Разработчики часто сталкивались с подобными критическими багами в версиях 8.3.6.2152 и 8.3.6.2390. Для решения этой проблемы выполните полную переустановку платформы:
C:\Program Files\1cv8\ и C:\Program Files (x86)\1cv8\. Это исключит ситуацию, когда сервер запускает старые версии библиотек DLL.8.3.12, 8.3.22 или выше, где ошибки работы с SQLite-журналами и блокировками сеансов были полностью устранены разработчиками фирмы «1С»).ragent.exe, rmngr.exe и rphost.exe, а также весь рабочий каталог сервера 1С (srvinfo) в список исключения сканирования в реальном времени. Это предотвратит блокировку файлов логов антивирусом в моменты пиковой транзакционной нагрузки.Применяя описанные системные подходы, мы сможем гарантировать стабильную работу серверов «1С:Предприятие» и навсегда избавимся от проблемы мертвых зависаний баз при загрузке и обновлении конфигураций.