Почему зависает 1С в клиент-серверном режиме и как восстановить работу баз данных

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Внезапные зависания программы 1С:Предприятие в клиент-серверном режиме у всех пользователей одновременно — распространенная проблема при администрировании инфраструктуры. Пользователи работают 10–15 минут, после чего клиентские приложения перестают отвечать на команды, а новые сеансы зависают на этапе запуска. Разберем основные причины таких блокировок, методы корректной диагностики и пошаговый порядок восстановления работы баз данных при сбоях кластера серверов 1С и СУБД MS SQL Server.

Анализ причин зависания: фоновые задания в изолированном контуре

Одной из скрытых причин полной блокировки рабочих процессов является выполнение регламентных заданий системным пользователем DefUser. Проанализируем механизм возникновения сбоя:

  1. Типовые конфигурации 1С по умолчанию запускают фоновые задачи: автоматическую загрузку курсов валют, проверку обновлений, актуализацию классификаторов (БИК, адресный классификатор) и отправку телеметрии.
  2. Если сервер находится в изолированной корпоративной сети без прямого доступа в интернет, фоновые потоки отправляют внешние веб-запросы и пытаются разрешить DNS-имена.
  3. Из-за отсутствия ответа сетевые сокеты переходят в режим длительного ожидания таймаута (TCP SYN timeout). Потоки накапливаются в пуле рабочего процесса rphost, исчерпывают системные ресурсы и вызывают каскадное зависание всех пользовательских сеансов.

Для устранения этой проблемы выполним следующие действия в пользовательском режиме 1С:

  1. Перейдем в раздел администрирования программы и откроем список регламентных и фоновых заданий.
  2. Отключим расписание для всех задач, требующих доступа к внешним сервисам (загрузка новостей, классификаторов, проверка контрагентов, интернет-поддержка).
  3. При необходимости переведем журнал регистрации на классический текстовый формат, если новый формат на базе SQLite вызывает избыточные блокировки дисковой подсистемы.

Восстановление списка баз в кластере 1С после очистки каталога srvinfo

При аварийных сбоях кластера серверов 1С администраторы нередко прибегают к очистке служебной папки srvinfo (каталог настроек кластера ragent). Если удалить содержимое этой папки без создания резервной копии, служба сервера 1С запустится с «чистыми» настройками, а список зарегистрированных информационных баз в консоли администрирования кластера пропадет.

Файлы данных на стороне СУБД (файлы .mdf и .ldf) при этом остаются нетронутыми. Разберем по шагам, как заново подключить существующие базы данных MS SQL к кластеру серверов 1С:

  1. Узнаем точные имена баз данных и параметры подключения. Список ранее подключаемых баз можно найти в файле конфигурации стартера 1С: ibases.v8i, который располагается в каталоге профиля пользователя AppData\Roaming\1C\1CEStart.
  2. Откроем консоль Администрирование серверов 1С:Предприятия.
  3. Раскроем дерево нужного кластера, перейдем в ветку Информационные базы, нажмем правой кнопкой мыши и выберем Создать > Информационная база.
  4. В окне параметров укажем свойства:
    1. Имя — имя информационной базы в кластере 1С (как пользователи видят ее при подключении).
    2. Тип СУБД — выберем MS SQL Server.
    3. Сервер баз данных — точное имя сервера или экземпляра MS SQL Server (например, SERVERNAME\MSSQL2008 или 127.0.0.1).
    4. Имя базы данных — точное наименование базы в MS SQL Server.
    5. Пользователь СУБД и Пароль — учетные данные администратора базы (например, учетная запись sa).
    6. Создать базу данных в случае ее отсутствия — флаг устанавливать НЕ нужно, чтобы 1С подключилась к существующей базе, а не перезаписала ее.
  5. Нажмем ОК и проверим доступность базы клиентами.

Диагностика экземпляров MS SQL Server и ошибок версионности

Если при попытке монтирования или подключения базы данных SQL Server выдает ошибку о несоответствии версии (например, база создана в более новой версии СУБД), проанализируем установленные экземпляры:

  1. На одном физическом сервере могут параллельно работать несколько служб MS SQL Server (например, устаревший SQL Server 2005 Express Edition от стороннего ПО и рабочий SQL Server 2008 R2 / 2012 / 2016 для 1С).
  2. Убедимся, что служба целевого экземпляра MS SQL запущена в оснастке services.msc.
  3. В среде SQL Server Management Studio при подключении укажем правильное имя инстанса через обратный слэш: ИМЯ_СЕРВЕРА\ИМЯ_ЭКЗЕМПЛЯРА.
  4. В случае потери параметров запуска экземпляров воспользуемся системной утилитой SQLDIAG из каталога Binn соответствующей версии SQL Server для анализа активных служб и портов.

Оптимизация и регулярное обслуживание MS SQL Server

Остановка работы 1С часто связана с отсутствием регламентного обслуживания СУБД и переполнением журнала транзакций (файла .ldf). Выполним базовые настройки:

  1. Ограничение памяти СУБД: Если сервер 1С и MS SQL Server установлены на одной машине, обязательно ограничим параметр Max Server Memory в свойствах сервера SQL. Это предотвратит вытеснение процессов сервера 1С (rphost.exe, rmngr.exe) в файл подкачки.
  2. Настройка планов обслуживания: Создадим регулярное расписание в SQL Server Agent для:
    1. Резервного копирования базы данных и журнала транзакций.
    2. Реиндексации и дефрагментации индексов.
    3. Обновления статистики (UPDATE STATISTICS).
    4. Усечения (Shrink) разросшихся файлов журналов транзакций.
  3. Настройка базы tempdb: Разделим файл данных tempdb на несколько файлов одинакового размера (по числу ядер процессора), чтобы избежать очередей распределения пространства при проведении тяжелых документов.
  4. Антивирусные исключения: Добавим каталоги баз данных, служебную папку srvinfo, временные каталоги Temp, а также процессы ragent.exe, rmngr.exe, rphost.exe и sqlservr.exe в исключения сканирования антивируса.
← На главную